Java में Collection और List के बीच क्या अंतर है?


153

Collectionऔर Listजावा में क्या अंतर है ? मुझे कब उपयोग करना चाहिए?


सार्वजनिक इंटरफ़ेस सूची संग्रह {}
rai.skumar

जवाबों:


263

सबसे पहले: a Listएक है Collection। यह एक विशेष है Collection, हालांकि।

Collectionसिर्फ इतना है: वस्तुओं का एक संग्रह। आप सामान जोड़ सकते हैं, सामान हटा सकते हैं, सामान पर पुनरावृति कर सकते हैं और पूछ सकते हैं कि सामान कितना है।

A Listइसमें सामान के परिभाषित अनुक्रम के बारे में जानकारी जोड़ता है: आप तत्व n पर स्थिति n प्राप्त कर सकते हैं , आप स्थिति n पर एक तत्व जोड़ सकते हैं , आप स्थिति n पर तत्व निकाल सकते हैं ।

एक में Collectionआप ऐसा नहीं कर सकते: "इस संग्रह में 5 वीं तत्व" परिभाषित नहीं है, क्योंकि कोई परिभाषित आदेश है वहाँ।

अन्य विशिष्ट संग्रह भी हैं, उदाहरण के लिए, Setजो इस सुविधा को जोड़ता है कि इसमें दो बार एक ही तत्व नहीं होगा।


9
हां, सूची संग्रह का एक क्रमबद्ध विशेषज्ञता है (लेकिन क्रमबद्ध नहीं) +1
atamanroman

2
जावा में सूची संग्रह इंटरफ़ेस का विस्तार करती है और अनुक्रमित कार्यों का निर्माण करती है जो स्थिति आधारित पुनर्प्राप्ति और हटाने के व्यवहार में मदद करती है
घर्षणहीन

188

Collectionजावा कलेक्शन पदानुक्रम के लिए रूट इंटरफ़ेस है। Listएक उप इंटरफ़ेस है जो एक ऑर्डर किए गए संग्रह को परिभाषित करता है, अन्य उप इंटरफेस हैं Queueजो आमतौर पर प्रसंस्करण के लिए तैयार तत्वों को संग्रहीत करेंगे (जैसे स्टैक )।

निम्नलिखित आरेख विभिन्न जावा संग्रह प्रकारों के बीच के संबंधों को प्रदर्शित करता है:

जावा संग्रह


1
वास्तव में आपकी छवि की तरह, मैंने इसे एससीजेपी की तैयारी के दौरान देखा है लेकिन इन दिनों उन सभी चीजों को भूल गया हूं।
Truong Ha

1
मुझे यह स्वीकार करना चाहिए कि यह चित्र इस ब्लॉग से लिया गया था । मैंने भी सबसे पहले K & B SCJP पुस्तक में इस तरह का एक चित्र देखा ।
क्रोक करें


मुझे लगता Mapहै कि एक नहीं है Collection
गियान्निस क्रिस्टोफाकिस

7

जावा एपीआई इसका जवाब देने के लिए सबसे अच्छा है

संग्रह

संग्रह पदानुक्रम में रूट इंटरफ़ेस। एक संग्रह वस्तुओं के एक समूह का प्रतिनिधित्व करता है, जिसे इसके तत्वों के रूप में जाना जाता है। कुछ संग्रह डुप्लिकेट तत्वों और दूसरों को अनुमति नहीं देते हैं। कुछ को आदेश दिया जाता है और अन्य को अनियंत्रित किया जाता है। JDK इस इंटरफ़ेस का कोई प्रत्यक्ष कार्यान्वयन प्रदान नहीं करता है: यह सेट और सूची जैसे अधिक विशिष्ट उप-केंद्रों के कार्यान्वयन प्रदान करता है। यह इंटरफ़ेस आमतौर पर संग्रह को पास करने और उन्हें हेरफेर करने के लिए उपयोग किया जाता है जहां अधिकतम सामान्यता वांछित है।

सूची (संग्रह का विस्तार)

एक आदेशित संग्रह (जिसे एक अनुक्रम के रूप में भी जाना जाता है)। इस इंटरफ़ेस के उपयोगकर्ता का सटीक नियंत्रण है कि सूची में प्रत्येक तत्व कहां डाला गया है। उपयोगकर्ता अपने पूर्णांक सूचकांक (सूची में स्थिति) द्वारा तत्वों तक पहुंच सकता है, और सूची में तत्वों की खोज कर सकता है।

सेट के विपरीत, सूचियाँ आमतौर पर डुप्लिकेट तत्वों की अनुमति देती हैं। औपचारिक रूप से, सूचियाँ आमतौर पर e1 और e2 तत्वों के जोड़े की अनुमति देती हैं जैसे कि e1.equals (e2), और वे आमतौर पर कई अशक्त तत्वों को अनुमति देते हैं यदि वे सभी शून्य तत्वों की अनुमति देते हैं। यह अकल्पनीय नहीं है कि कोई ऐसी सूची लागू करने की इच्छा कर सकता है जो डुप्लिकेट को प्रतिबंधित करती है, जब उपयोगकर्ता उन्हें डालने का प्रयास करता है, तो रनटाइम अपवादों को फेंकने से, लेकिन हम इस उपयोग के दुर्लभ होने की उम्मीद करते हैं।


3

सूची और सेट संग्रह के दो उपवर्ग हैं।

सूची में, डेटा विशेष क्रम में है।

सेट में, यह एक ही डेटा को दो बार शामिल नहीं कर सकता है।

संग्रह में, यह बिना किसी विशेष क्रम के डेटा को संग्रहीत करता है और इसमें डुप्लिकेट डेटा हो सकता है।


2

संग्रह एक उच्च-स्तरीय इंटरफ़ेस है जो जावा ऑब्जेक्ट्स का वर्णन करता है जिसमें अन्य वस्तुओं के संग्रह हो सकते हैं। यह इस बारे में बहुत विशिष्ट नहीं है कि वे कैसे एक्सेस किए जाते हैं, क्या एक ही ऑब्जेक्ट की कई प्रतियां एक ही संग्रह में मौजूद हो सकती हैं, या क्या ऑर्डर महत्वपूर्ण है। सूची विशेष रूप से वस्तुओं का एक ऑर्डर किया गया संग्रह है। यदि आप किसी विशेष क्रम में वस्तुओं को एक सूची में रखते हैं, तो वे उसी क्रम में रहेंगे।

और यह निर्णय लेना कि इन दो इंटरफेस का उपयोग करना कहां है यह तय करने की तुलना में बहुत कम महत्वपूर्ण है कि आप किस ठोस कार्यान्वयन का उपयोग करते हैं। यह आपके कार्यक्रम के समय और स्थान के प्रदर्शन के लिए निहितार्थ होगा। उदाहरण के लिए, यदि आप एक सूची चाहते हैं, तो आप एक ArrayList या LinkedList का उपयोग कर सकते हैं, जिनमें से प्रत्येक में आवेदन के लिए निहितार्थ होने वाले हैं। अन्य संग्रह प्रकारों (जैसे सेट) के लिए, इसी तरह के विचार लागू होते हैं।


2

संग्रह सूची का सुपर इंटरफ़ेस है इसलिए प्रत्येक जावा सूची संग्रह का एक उदाहरण है। संग्रह केवल क्रमिक रूप से (और किसी विशेष क्रम में) नहीं हैं, जबकि एक सूची get(int index)विधि के माध्यम से एक निश्चित स्थान पर एक तत्व तक पहुंच की अनुमति देता है ।


2

संग्रह जावा संग्रह पदानुक्रम का मुख्य इंटरफ़ेस है और सूची (अनुक्रम) एक उप संग्रह में से एक है जो एक ऑर्डर किए गए संग्रह को परिभाषित करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.