प्रश्न यह है कि हैश मैप.वल्यूज़() संग्रह से ऐरेलिस्ट बनाने के लिए कितना खर्च होता है? या अकेले मूल्य संग्रह बनाते हैं? Map.size()> 100k मानते हैं। ऑब्जेक्ट्स को ऐरेलिस्ट (हैश मैप के बजाए) में भी हर समय आयोजित किया जा सकता है, जिसमें अन्य हिस्सों में प्रभाव पड़ता है (तत्वों में संशोधन, कुंजी द्वारा आसान)। ऐरेलिस्ट का उपयोग प्रत्येक एन-वें तत्व पर फिर से करने के लिए किया जाता है। (यही कारण है कि मूल्य संग्रह सीधे उपयोग नहीं किया जा सकता है)। पुनरावृत्ति के दौरान कोई संशोधन नहीं किया जाता है।प्रदर्शन: HashMap.values से एक ArrayList बनाना()
उत्तर
आप तत्वों को छोड़ने के लिए Iterator
का उपयोग कर सकते हैं - बस next()
पर कई बार कॉल करें।
किसी भी संग्रह की सूची बनाना एक रैखिक जटिलता है।
समझ में आता है। तो मैं iterator का उपयोग करता हूं और इसे लूप में it.next() कहते हैं क्योंकि कई बार पैरामीटर होता है। –
हां (15 वर्ण ..) – Bozho
आप अपना खुद का हैश मैप बना सकते हैं, जिसमें सीधे मूल्यों का आर्रेलिस्ट संग्रह होता है (मुझे विश्वास नहीं है कि हैश मैप इसे मुफ्त में करता है, इसके लिए डेटा संरचना अलग है)। लेकिन इसके लिए आपकी तरफ से कुछ अतिरिक्त कोडिंग की आवश्यकता है।
HashMap
आंतरिक रूप से संग्रह values
में मूल्यों को संग्रहीत करता है। HashMap
के माता-पिता AbstractMap
के source code पर एक नज़र डालें।
तो HashMap.values()
सीधे Collection
देता है। कोई गणना या डेटा प्रतिलिपि नहीं है। यह जितना तेज़ हो सकता है।
बस मूल्यों को प्राप्त और फिर पाश के लिए एक कार्य करें:
int n = 5; // every 5th element
Object[] values = hashMap.values().toArray();
int size = values.length;
for (int i = 0; i < size; i += n){
values[i];
// do something
)
HashMap.values()
मूल्यों का एक ArrayList
लेकिन एक Values
संग्रह वापस नहीं करता है।
स्रोत:
public Collection<V> values() {
Collection<V> vs = values;
return (vs != null ? vs : (values = new Values()));
}
Values
एक AbstractCollection
है। मूल्यों का कारण केवल हैश मैप के इटरेटर को संदर्भित करना है।
आपका प्रश्न:
प्रश्न कितना करने के लिए लागत एक HashMap.values () संग्रह से एक ArrayList बनाने है?
एक रेखीय जटिलता है कि (जैसा कि Bozho कहा)
ArrayList<V> valuesList = new ArrayList<V>(hashMap.values());
ArrayList के बाद से, valuesList
संग्रह hashMap
toArray()
विधि है जो अनिवार्य रूप में 0..N (आकार) तत्व से एक for
पाश करता कॉल संग्रह।
उम्मीद है कि इससे मदद मिलती है।
@ बोझो के समाधान पर विस्तृत करने के लिए आप बस कर सकते हैं।
int count = 0;
for(Value value: map.values())
if(count++ % 5 == 0)
// do something.
- 1. एक ArrayList
- 2. ArrayList
- 3. Arraylist से Array
- 4. ArrayList: जावा से सी #
- 5. एक ArrayList जावा
- 6. क्या एक ArrayList
- 7. ArrayList
- 8. ArrayList
- 9. ArrayList
- 10. जावा: सुरक्षित रूप से एक ArrayList के क्लोन टाइपकास्ट?
- 11. ArrayList
- 12. ArrayList
- 13. php में एक छवि बनाना, प्रदर्शन कार्य, फ़ाइल में सहेजना
- 14. mysql - बनाना पंक्तियों बनाम कॉलम को प्रदर्शन
- 15. स्मृति आवंटन परिप्रेक्ष्य से ArrayList बनाम LinkedList
- 16. एक सादे सरणी से एक QList बनाना
- 17. जावा: ArrayList को
- 18. ArrayList प्रश्न
- 19. ArrayList पैरामीटर
- 20. PowerShell में एक ऐरे से ArrayList कैसे बनाएं?
- 21. जावा में एक ArrayList से वस्तुओं को हटाने
- 22. जावा ArrayList
- 23. जावा ArrayList
- 24. जावा ArrayList
- 25. /deserialize ArrayList
- 26. जावा ArrayList
- 27. ArrayList BinarySearch
- 28. ArrayList Java
- 29. प्रिंट ArrayList
- 30. वेक्टर बनाम संग्रह। सिंक्रनाइज़लिस्टसूची (ArrayList)
प्रश्न स्पष्ट नहीं है। मुझे समझ में नहीं आया। – Emil
जब आप "लागत" के बारे में बात करते हैं, तो क्या आपका मतलब है, समय या स्मृति? – Ralph