2010-09-16 19 views
25

जावा में std :: वेक्टर के लिए सबसे नज़दीकी चीज़ क्या होगी? इसका मतलब है, एक वर्ग जो टी को अपने कन्स्ट्रक्टर में ले जा सकता है और फिर पुशबैक, पॉपबैक() और यह निरंतर मेमोरी (लिंक सूची नहीं) में संग्रहीत होता है।जावा में std :: वेक्टर के समतुल्य?

धन्यवाद

+0

है? –

+1

@ फेरारी प्रशंसक: मुझे लगता है कि वह सिर्फ उन लोगों का जिक्र कर रहा है क्योंकि सी ++ के वेक्टर वर्ग में समान तरीके हैं। – casablanca

+1

निरंतर स्मृति क्या है? – fastcodejava

उत्तर

31

ArrayList
सब कुछ सरणी में संग्रहीत ("निरंतर स्मृति") आंतरिक रूप से, हालांकि ऑपरेशन के नाम पर कुछ भिन्न है।

A bit more about list implementations in Java
And about generics

संपादित
सहायक विधि भी अपने जवाब में उपयोगी वर्ग उल्लेख किया (हालांकि वास्तव में वेक्टर सी के बराबर नहीं ++)।

+1

क्या ऐरेलिस्ट के बजाय जावा वेक्टर का उपयोग नहीं किया जा सकता है? –

2

क्या आप क्या देख रहे हैं ArrayList है?
ArrayList l = new ArrayList<String>();
तो आपके पास कुछ भी सूची हो सकती है (<> के बीच परिभाषित)।

7

शायद आपको ArrayDeque होगा, यदि आपको स्टैक कार्यक्षमता की आवश्यकता है।

Stack कक्षा का उपयोग न करें जैसा कि यहां सुझाव है।

+2

अच्छी कॉल, हालांकि 'ऐरेलिस्ट' अभी भी एक करीबी मैच होगा क्योंकि यह सी ++ 'वेक्टर' की तरह अनुक्रमित तत्व पहुंच का समर्थन करता है। – casablanca

1

आप एक ArrayDeque उपयोग कर सकते हैं, यह रैंडम एक्सेस लेकिन समर्थन Deque (डबल एंडेड कतार) तरीके

0

का समर्थन नहीं करता बस वेक्टर वर्ग के बारे में कैसे?

http://download-llnw.oracle.com/javase/6/docs/api/java/util/Vector.html

+2

'वेक्टर' बहुत ज्यादा बहिष्कृत है, इसके बजाए 'ऐरेलिस्ट' का उपयोग करें। –

+0

मैं सही खड़ा हूँ। ऐसा लगता है कि इस बिंदु पर भी चर्चा की गई है http://stackoverflow.com/questions/1386275/why-java-vector-class-is-Considered-obsolete-or-deprecated –

2

आप शायद ArrayDeque जो कुशलता से सूची के दोनों सिरों से धक्का/पॉप शैली का उपयोग का समर्थन करता है के लिए देख रहे हैं।

बचेंStack और Vector - इन सिंक्रनाइज़ किए जाते हैं, जो आम तौर पर व्यर्थ भूमि के ऊपर निकलता है।

ArrayList भी ठीक है, हालांकि, आपको अपनी खुद की (छोटी) पॉप विधि को लागू करने की आवश्यकता होगी क्योंकि यह कक्षा द्वारा ही प्रदान नहीं की जाती है। ArrayList अनुक्रमित पहुंच की अनुमति देता है, जो ArrayDeque की कमी है।

0

आप क्या जरूरत है वास्तव में एक java.util.ArrayList<T> है आप http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html

में प्रलेखन जाँच कर सकते हैं मूल रूप से एक सूची किसी सरणी जहां संदर्भ स्मृति की एक सतत हिस्सा में रहते हैं के साथ लागू किया है। List<String> stringList = new ArrayList<String>(); इसलिए यदि आप निर्णय लेते हैं, आप java.util.LinkedList<T> या एक-दूसरे से कार्यान्वयन बदल सकते हैं:

मैं इस तरह एक अंतरफलक चर के साथ संयोजन में उपयोग करने के लिए सलाह देते हैं।

1

मैं क्यों आपको लगता है कि निरंतर स्मृति में संग्रहीत किया जाता है अभी तक एक पुश है और सिर्फ एक ढेर की तरह पॉप आपरेशन कुछ की आवश्यकता है लगता है कि यह LinkedList

vector (c++) <===========> linkedlist(java) 
v.front()  <===========> l.peekFirst() 
v.back()  <===========> l.peekLast() 
v.push_back(x) <===========> l.add(x) 
v.pop_back() <===========> l.pollLast() 
जिज्ञासा से बाहर
संबंधित मुद्दे