java - Sorting a list of strings by values of map -
इस सवाल का पहले से ही एक उत्तर है: < / P>
- 44 उत्तर
मैंने एक नक्शा बनाया और I इसे मूल्य से सॉर्ट करना चाहते हैं, लेकिन मुझे आउटपुट को स्ट्रिंग्स की सूची के रूप में देने की आवश्यकता है। मुझे लगता है कि मैं तुलनीयता बढ़ाकर मानचित्र को क्रमबद्ध कर सकता हूं और फिर प्रत्येक सॉर्ट की गई कुंजी को सूची में जोड़ सकता हूं, लेकिन मुझे यकीन नहीं है कि यह सबसे अच्छा तरीका है। कोई भी विचार?
// कोड अभी समाप्त नहीं हुआ // सार्वजनिक सूची & lt; स्ट्रिंग & gt; खोज (स्ट्रिंग उपसर्ग) {मानचित्र & lt; स्ट्रिंग, पूर्णांक & gt; उपयुक्त_साइट्स = नया लिंक्डएचशैप & lt; & gt; (); सूची के & lt; स्ट्रिंग & gt; Sorted_list = नया अर्रेलिस्ट & lt; & gt; (); (नक्शा। प्रविष्टि & lt; स्ट्रिंग, साइट & lt; स्ट्रिंग & gt; & gt; साइट: index.entrySet ()) {नक्शा & lt; स्ट्रिंग, पूर्णांक & gt; शब्द = site.getValue ()। GetWords (); इंट काउंटर = 0; (स्ट्रिंग शब्द: words.keySet ()) {if (word.startsWith (prefix)) काउंटर ++; } इंट वजन = काउंटर / साइट .get मूल्य ()। GetAmmount (); यदि (वजन == 0) जारी रहता है; उपयुक्त_साइट। इनपुट (site.getKey (), वज़न); } वापसी नल; }
अंतिम हैशमैप & lt; स्ट्रिंग, पूर्णांक & gt; नक्शा = नया हैशमैप & lt; स्ट्रिंग, पूर्णांक & gt; (); map.put ( "एबीसीडी", 5); map.put ( "xyz", 152); map.put ( "PQR", 1); सूची सूची = नया अर्रेलिस्ट & lt; स्ट्रिंग & gt; (map.keySet ()); System.out.println ("इससे पहले:" + सूची); (सङ्केतक आइटम 1, स्ट्रिंग मद 2) {int compare = map.get (item1) - map.get (item2); यदि (तुलना करें == 0) {। वापसी (आइटम 1 कॉमपैरे टू (आइटम 2));} वापसी की तुलना;}}); System.out.println ("बाद:" + सूची);
यह कोड इनलाइन तुलनित्र का उपयोग कर रहा है .. यदि मान समान हैं, तो हम लेक्सिकल ऑर्डर पर विचार करते हैं। इससे पहले
प्रिंट होगा: [pqr, abcd, Xyz]
के बाद: [pqr, abcd, xyz]
Comments
Post a Comment