2011-04-18 16 views
11

java.util.Map इंटरफ़ेस java.util.Collection इंटरफ़ेस का विस्तार क्यों नहीं करता है? java.util.Map कुंजी-मूल्य जोड़े का संग्रह नहीं है?मानचित्र विस्तारित नहीं करता है संग्रह इंटरफ़ेस

+3

यह नहीं है। Map.entrySet() लागू किया गया है। – bestsss

उत्तर

22

संग्रह एक मूल्य के तत्व मानते हैं। नक्शा कुंजी/मूल्य जोड़े की प्रविष्टियों को मानता है। उन्हें एक ही सामान्य इंटरफ़ेस का पुन: उपयोग करने के लिए इंजीनियर किया जा सकता था, हालांकि वे लागू कुछ विधियां असंगत हैं।

Collection.remove(Object) - removes an element. 
Map.remove(Object) - removes by key, not by entry. 

आप प्रविष्टियों का एक संग्रह है, जो है क्या Map.entrySet() करता है के रूप में एक मानचित्र मॉडल सकता है।

कुछ तरीकों में आम हैं; size(), isEmpty(), clear(), putAll/addAll() लेकिन इनके स्टैंड स्टैंड अकेले इंटरफ़ेस के रूप में अधिक मूल्य होने की संभावना नहीं है। (फिर Map.entrySet() का उपयोग किया जा सकता है)

18

क्योंकि Collection इंटरफ़ेस Map इंटरफ़ेस के साथ काफी हद तक असंगत है। यदि Map विस्तारित Collection, add(Object) विधि क्या होगी?

दो इंटरफेस में बहुत अलग अर्थशास्त्र हैं। यदि आपको संग्रह के रूप में Map के मानों या कुंजी की आवश्यकता है, तो आप हमेशा keySet()/values() का उपयोग कर सकते हैं।

2

क्योंकि Collections में घोषित कुछ विधियां Map इंटरफ़ेस और इसके विपरीत नहीं हैं।

पहले के लिए एक उदाहरण Collections इंटरफ़ेस का add(Object) विधि है,
दूसरे का एक उदाहरण Map इंटरफ़ेस का put(K, V) है।

मानचित्र के लिए add(Object) को समझदारी से लागू करने के लिए कोई लगातार तरीका नहीं है - क्या यह एक कुंजी है, क्या यह एक मूल्य है? यह put(K, V) के लिए मान्य है। ArrayList में संभवतः एक कुंजी क्या हो सकती है?

1

सभी संग्रहों को एक डिफ़ॉल्ट कन्स्ट्रक्टर और एक अन्य कन्स्ट्रक्टर लागू करना होगा जो पैरामीटर के रूप में संग्रह लेता है। आप नक्शा के अलावा किसी भी अन्य संग्रह के साथ एक नक्शा नहीं बना सकते हैं।

चूंकि नक्शा उस वस्तु के प्रकार पर प्रतिबंध लगाता है जो आप पकड़ सकते हैं, आप एक मानचित्र को संग्रह के रूप में लागू नहीं कर सकते हैं।

+1

दो रचनाकार ** ** ** एक सख्त आवश्यकता नहीं हैं: वे केवल * सामान्य उद्देश्य * संग्रह (यानी) पर लागू होते हैं।विशिष्ट लोगों के लिए नहीं) और इसे '* चाहिए * मानक "कन्स्ट्रक्टर' के रूप में लिखा जाना चाहिए, इसलिए सामान्य उद्देश्य संग्रह के लिए भी यह एक पूर्ण आवश्यक नहीं है। –

3

java.util.Map इंटरफ़ेस java.util.Collection इंटरफ़ेस का विस्तार क्यों नहीं करता है?

Map एक मुख्य/मान जोड़े जबकि Collection एक संरचित तरीके से संग्रहित वस्तुओं का एक समूह का एक संग्रह है और एक निर्दिष्ट पहुँच तंत्र है। नक्शा संग्रह इंटरफ़ेस का विस्तार क्यों नहीं करता है यह कारण है कि add(E e); कुंजी मान जोड़ी जैसे मानचित्र के put(K, V) को पूरा नहीं करता है।

इसके अलावा, संग्रह iterator() विधि बिंदु Map को विस्तारित करने के लिए क्या होगा? कुंजी के इटरेटर या मूल्य के इटरेटर?

संबंधित मुद्दे