मैं इस तथ्य से हैरान था कि Map<?,?>
ए नहीं है Collection<?>
।
मैंने सोचा था कि अगर यह इस तरह से घोषित किया गया था, तो यह बहुत मायने रखेगा:
public interface Map<K,V> extends Collection<Map.Entry<K,V>>
सब के बाद, एक Map<K,V>
का एक संग्रह है Map.Entry<K,V>
, है ना?
तो क्या इसका एक अच्छा कारण है कि इसे इस तरह लागू नहीं किया गया है?
एक सबसे आधिकारिक जवाब के लिए कि्लिटस के लिए धन्यवाद, लेकिन मैं अभी भी सोच रहा हूँ क्यों, अगर आप पहले से ही एक देख सकते हैं Map<K,V>
के रूप में Set<Map.Entries<K,V>>
(के माध्यम से entrySet()
), यह सिर्फ इतना है कि इंटरफ़ेस विस्तार नहीं करता है बजाय।
यदि एक
Map
हैCollection
, तो क्या तत्व हैं? एकमात्र उचित उत्तर "की-वैल्यू पेयर" है
वास्तव में, interface Map<K,V> extends Set<Map.Entry<K,V>>
बहुत अच्छा होगा!
लेकिन यह बहुत सीमित (और विशेष रूप से उपयोगी नहीं)
Map
अमूर्तता प्रदान करता है ।
लेकिन अगर ऐसा है तो entrySet
इंटरफ़ेस द्वारा निर्दिष्ट क्यों किया गया है? यह किसी भी तरह उपयोगी होना चाहिए (और मुझे लगता है कि उस स्थिति के लिए बहस करना आसान है!)।
आप यह नहीं पूछ सकते कि किसी दिए गए मुख्य नक्शे का क्या मूल्य है, और न ही आप किसी दिए गए कुंजी के लिए प्रविष्टि को हटा सकते हैं, यह जाने बिना कि यह किस मूल्य के नक्शे के लिए है।
मैं यह नहीं कह रहा हूँ कि यह सब वहाँ है Map
! यह और सभी अन्य तरीकों को रख सकता है (सिवाय entrySet
, जो अब बेमानी है)!