HashMap.values()
के स्रोत कोड के रूप मेंHashMap.values () और HashMap.keySet() मूल्य और कुंजी कैसे लौटते हैं?
public Collection<V> values() {
Collection<V> vs = values;
return (vs != null ? vs : (values = new Values()));
}
आप देख सकते हैं, जब values()
विधि पहले कहा जाता है, यह सिर्फ एक Values
ऑब्जेक्ट इस प्रकार दिखाया गया है। Values
ऑब्जेक्ट AbstractCollection
का कोई सबक्लूस नहीं है जिसमें कोई कन्स्ट्रक्टर नहीं है, और निश्चित रूप से कोई तत्व नहीं है। लेकिन जब मैंने विधि को बुलाया, तो उसने तेजी से संग्रह
Collection<String> values = map.values();
System.out.println(values);
यह इतना अजीब है। न केवल values()
, लेकिन keySet()
और entrySet()
विधि ऐसी खाली वस्तुओं को वापस लौटाती है। तो, मेरा प्रश्न यह है कि, इन विधियों को हमारे द्वारा आवश्यक तत्वों के साथ वस्तुओं को कब और कैसे किया जाता है?
'ध्यान दें कि इसका अर्थ यह भी है कि आपके द्वारा प्राप्त संग्रह एक प्रति नहीं है, लेकिन फिर भी मूल हैश मैप सामग्री को संदर्भित करता है और इसलिए जब आप हैश मैप अपडेट करते हैं तो परिवर्तन होता है:' जिसे Map.values के अनुबंध में स्पष्ट रूप से लिखा गया है)), किसी भी गलतफहमी से बचने के लिए। – biziclop
एक आंतरिक वर्ग एक गैर स्थैतिक घोंसला वर्ग है, यानी वर्ग स्थिर था, यह एक आंतरिक वर्ग नहीं होगा, बल्कि बस एक स्थिर घोंसला वर्ग होगा। https://docs.oracle.com/javase/tutorial/java/javaOO/nested.html – Sardtok
@ सार्डटोक: संकेत के लिए धन्यवाद, मैंने आधिकारिक शब्दावली का उपयोग करने के लिए अभी जवाब संपादित किया है। – mastov