सूर्य से लिंक्ड हैशमैप्स के स्रोत कोड को देखकर, मुझे लगता है कि KeyIterator नामक एक निजी श्रेणी है, मैं इसका उपयोग करना चाहूंगा। मैं कैसे पहुंच प्राप्त कर सकता हूं?मैं LinkedHashMap के लिए एक कुंजी इटरेटर कैसे प्राप्त करूं?
उत्तर
आप इसे
myMap.keySet().iterator();
तुम भी पता करने के लिए यह मौजूद है आवश्यकता नहीं होनी चाहिए फोन करके प्राप्त होता है; यह सिर्फ कार्यान्वयन का एक आर्टिफैक्ट है। आप सभी जानते हैं कि वे चाबियों को फिर से चलाने के लिए उड़ान बंदरों का उपयोग कर सकते हैं; जब तक वे spec के अनुसार पुनरावृत्त होते हैं, इससे कोई फर्क नहीं पड़ता कि वे इसे कैसे करते हैं।
वैसे, आप जानते हैं कि HashMap
एक निजी वर्ग KeyIterator
कहा जाता है (के रूप में करने ConcurrentHashMap
, ConcurrentSkipListMap
, EnumMap
, IdentityHashMap
, TreeMap
, और WeakHashMap
)?
क्या इससे कोई फर्क पड़ता है कि आप HashMap
की चाबियों के माध्यम से कैसे पुन: प्रयास करते हैं?
संपादित करें: अपनी टिप्पणी के लिए प्रतिक्रिया में, ध्यान रखें कि यदि आप एक Map
में सब कुंजी-मान जोड़ों से अधिक पुनरावृति करने की कोशिश कर रहे हैं हो सकता है, वहाँ चाबियाँ पर पुनरावृत्ति और बुला तुलना में एक बेहतर तरीका है प्रत्येक के लिए get
। entrySet()
विधि को सभी कुंजी-मूल्य जोड़े के Set
मिलते हैं जिन्हें आप फिर से चालू कर सकते हैं। तो बजाय लेखन की:
for (Key key : myMap.keySet()) {
Value val = myMap.get(key);
...
}
आप लिखना चाहिए:
for (Map.Entry<Key, Value> entry : myMap.entrySet()) {
doSomethingWithKey(entry.getKey());
doSomethingWithValue(entry.getValue());
...
}
तुम भी अगर आप चाहते हैं values()
साथ मूल्यों पर पुनरावृति सकता है।
ध्यान दें कि जब से keySet
, entrySet
, और values
Map
interface में परिभाषित कर रहे हैं, वे सिर्फ LinkedHashMap
नहीं किसी भी Map
के लिए काम करेंगे।
आपको लिंकड हैशैप के आंतरिक कार्यान्वयन के हिस्से के रूप में परिभाषित कुछ भी नहीं करना चाहिए (यानी स्रोत कोड में लेकिन एपीआई में परिभाषित नहीं किया गया है)। क्या होता है यदि आंतरिक कार्यान्वयन अगली रिलीज में बदल जाता है? इसका उपयोग कर आपके सभी कोड तोड़ देंगे।
आप API को कोड और तरह
myMap.keySet().iterator()
यह एक निजी वर्ग है, तो आप सीधे उपयोग नहीं कर सकते कुछ करना चाहिए।
private class KeyIterator extends LinkedHashIterator<K> {
जब आप सामान्य इटरेटर का उपयोग करते हैं तो इसका एक उदाहरण लौटा दिया जाता है।
myMap.keySet().iterator()
- 1. मैं एक पैटर्न द्वारा ऑब्जेक्ट कुंजी कैसे प्राप्त करूं?
- 2. LinkedHashMap
- 3. LinkedHashMap में अगला आइटम प्राप्त करें?
- 4. इंडेक्स पर आधारित LinkedHashMap से मूल्य कैसे प्राप्त करें?
- 5. मैं SortedDictionary से पिछली कुंजी कैसे प्राप्त करूं?
- 6. एक इटरेटर
- 7. मैं एक तालिका में कैसे सम्मिलित करूं और प्राथमिक कुंजी मान वापस प्राप्त करूं?
- 8. एक समवर्ती LinkedHashMap लागू करना
- 9. मैं ईएससी कुंजी को तेजी से पहचानने के लिए विम कैसे प्राप्त करूं?
- 10. क्या एक LinkedHashMap ऑब्जेक्ट से कुंजी और मानों की वापसी के लिए ऑर्डर की गारंटी है?
- 11. मैं कक्षा के सामान्य प्रकार को प्राप्त करने के लिए एक आंतरिक वर्ग कैसे प्राप्त करूं?
- 12. कैसे एक इटरेटर
- 13. मैं सार्वजनिक-कुंजी प्रमाणीकरण कैसे सेटअप करूं?
- 14. मैं स्टैकफ्रेम के लिए निष्पादन ऑब्जेक्ट कैसे प्राप्त करूं?
- 15. CreateProcessAsUser के लिए मैं वैध उपयोगकर्ता टोकन कैसे प्राप्त करूं?
- 16. एक बहुआयामी सरणी को संसाधित करने के लिए मैं एक रिकर्सिव सरणी इटरेटर का उपयोग कैसे करूं?
- 17. मैं लोड करने के लिए hibernate import.sql कैसे प्राप्त करूं?
- 18. जेस्पर प्राप्त करने के लिए मैं jrxml कैसे संकलित करूं?
- 19. मैं पाइथन बाहरी पुस्तकालयों के लिए omnicompletion कैसे प्राप्त करूं?
- 20. मैं विधि के लिए विधि ऑब्जेक्ट कैसे प्राप्त करूं?
- 21. std :: डेक: मैं एक निर्दिष्ट सूचकांक पर तत्व को इंगित करने वाला एक इटरेटर कैसे प्राप्त करूं?
- 22. तत्व सूचकांक द्वारा LinkedHashMap का सबमिशन कैसे प्राप्त करें?
- 23. एक इटरेटर कक्षा
- 24. मैं एक आंतरिक कक्षा घोषित कैसे करूं?
- 25. रेडिस में, मैं एक कुंजी की समाप्ति तिथि कैसे प्राप्त करूं?
- 26. मैं एक पीएनजी छवि से एक आइकन कैसे प्राप्त करूं?
- 27. एक इटरेटर लिखने के लिए कब?
- 28. मैं एक सरणी संदर्भ से एक टुकड़ा कैसे प्राप्त करूं?
- 29. मैं एक और गतिविधि में एक चर कैसे प्राप्त करूं?
- 30. मैं एक कुंजी के लिए एकाधिक कुंजी के साथ एक शब्दकोश कैसे बना सकता हूं?
यह मेरे लिए ऐसा नहीं हुआ कि जब तक मैं आंतरिक निजी वर्ग नहीं देखता तब तक मैं एक लिंक्ड हैशैप पर फिर से चला सकता हूं। हालांकि उत्तर के लिए धन्यवाद। –
मुझे नहीं पता था कि एंट्रीसेट() का क्या उपयोग है। लेकिन, यह लगभग सभी स्थानों में वास्तव में उपयोगी है, मैं हैश मैप का उपयोग करता हूं। धन्यवाद @ माइकल – sravanreddy001