2012-09-01 11 views
5

संभव डुप्लिकेट:
How to sort a Map<Key, Value> on the values in Java?जावा हैश मैप सॉर्टिंग <स्ट्रिंग, इंटीजर>। इसे कैसे क्रमबद्ध करें?

मेरी परियोजना में, मैं इस

HashMap डिग्री = नए HashMap की तरह एक HashMap ले लिया है();

मान लीजिए मैं:

degree.put("a",5); 
degree.put("b",2); 
degree.put("c",4); 
degree.put("d",2); 
degree.put("e",3); 
degree.put("f",5); 

अब मैं दिया पूर्णांक के अनुसार इस सूची को क्रमबद्ध करने के लिए है महत्व देता

छाँटे HashMap होना चाहिए:

{ए = 5, एफ = 5, सी = 4, ई = 4, बी = 4, डी = 2}

मैं यह कैसे कर सकता हूं?

+0

मुझे लगता है कि मूल हैश मैप पूर्णांक मानों के अनुसार क्रमबद्ध है वास्तव में {ए = 5, एफ = 5, सी = 4, ई = 3, बी = 2, डी = 2} जैसा होगा। –

+0

इसे देखें http://stackoverflow.com/questions/109383/how-to-sort-a-mapkey-value-on-the-values-in-java – SiB

उत्तर

11

HashMap एक अनॉर्डर्ड संग्रह है। इसका कोई क्रम क्रम नहीं है। यहां तक ​​कि TreeMap कुंजी द्वारा क्रमबद्ध होगा, मूल्य नहीं।

आप मूल्यों का सॉर्ट क्रम से एक हल कर सूची तैयार करने के लिए चाहते हैं, आप एक उपयुक्त वस्तु बनाने के लिए, इस तरह के एक ArrayList<Map.Entry<String,Integer>> के रूप में, अपने HashMap से अधिक पुनरावृति और सभी प्रविष्टियों को सम्मिलित करना होगा, और फिर साथ Collections.sort फोन एक संयोजन समारोह।

4

यदि आप नक्शा सॉर्ट करना चाहते हैं, तो हैश मैप सबसे अच्छा तरीका नहीं है।

मैं सुझाव देता हूं कि इसे TreeMap पर सॉर्ट करें। तुम्हें पता है, कुंजी के बजाय मानों की तुलना करने तुलनित्र सेट कर सकते हैं के रूप में वे इस जवाब में कार्य करें:

https://stackoverflow.com/a/1283722/975959

+0

उस वृक्ष मानचित्र पर कॉल करने के लिए बेहतर योजना नहीं है। अगर यह मूल्यों को देख रहा है। – bmargulies

0

आप insertion sort कर मूल से एक नया hashmap निर्माण करने के लिए कर सकते हैं (x2 स्मृति लेता है और बहुत अक्षम है)। इसलिए, आपको हैशपैप के लगभग। * (और सबसे खराब मामले) समयों की .get() और .set() विधियों का उपयोग करने की आवश्यकता होगी जहां n तत्वों की संख्या है।

1
ArrayList<Integer> sortedHashMap=new ArrayList<Integer>(); 

for("your Object" m : degree.values()) 
{ 
     sortedHashMap.add(m); 
} 

collections.sort(sortedHashMap); 

तो, आप हैशमैप सॉर्ट किए गए अपने हैश मैप को प्रिंट कर सकते हैं!

संबंधित मुद्दे