संक्षिप्त जवाब
एक का उपयोग करें TreeMap
। यह वही है जो इसके लिए है।
यदि यह नक्शा आपके पास है और आप प्रकार का निर्धारण नहीं कर सकते हैं, तो आप निम्न कार्य कर सकते हैं:
SortedSet<String> keys = new TreeSet<>(map.keySet());
for (String key : keys) {
String value = map.get(key);
// do something
}
यह कुंजी के प्राकृतिक क्रम में नक्शे में पुनरावृति करेगा।
लंबा जवाब
तकनीकी रूप से, आप किसी भी चीज का उपयोग कर सकते हैं जो लागू करता है SortedMap
, लेकिन दुर्लभ मामलों को छोड़कर TreeMap
, केवल एक Map
कार्यान्वयन का उपयोग करते हुए, आमतौर पर इसकी मात्रा को छोड़कर HashMap
।
उन मामलों के लिए जहां आपकी कुंजी एक जटिल प्रकार है जो तुलनीय को लागू नहीं करता है या फिर आप प्राकृतिक क्रम का उपयोग नहीं करना चाहते हैं TreeMap
और आपके TreeSet
पास अतिरिक्त निर्माता हैं जो आपको एक में पास करते हैं Comparator
:
// placed inline for the demonstration, but doesn't have to be a lambda expression
Comparator<Foo> comparator = (Foo o1, Foo o2) -> {
...
}
SortedSet<Foo> keys = new TreeSet<>(comparator);
keys.addAll(map.keySet());
जब एक का उपयोग कर याद रखें TreeMap
या TreeSet
यह की तुलना में अलग प्रदर्शन विशेषताओं होगा कि HashMap
या HashSet
। मोटे तौर पर बोलने वाले संचालन जो एक तत्व को ढूंढते हैं या सम्मिलित करते हैं, वह ओ (1) से ओ (लॉग (एन)) तक जाएगा ।
में HashMap
, 1000 आइटम से 10,000 तक ले जाना वास्तव में किसी तत्व को देखने के लिए आपके समय को प्रभावित नहीं करता है, लेकिन TreeMap
देखने के समय के लिए लगभग 3 गुना धीमा होगा (लॉग 2 मानकर )। हर तत्व लुकअप के लिए १००० से १,००,००० की गति लगभग ६ गुना धीमी होगी।