logo

Kaip rūšiuoti „HashMap“ programoje „Java“.

„Java HashMap“ pagal numatytuosius nustatymus neišsaugo jokios tvarkos. Jei reikia rūšiuoti „HashMap“, rūšiuojame jį aiškiai pagal reikalavimus. „Java“ suteikia galimybę rūšiuoti „HashMap“ pagal raktus ir reikšmes. Šiame skyriuje sužinosime, kaip rūšiuoti HashMap pagal raktus ir reikšmes.

  • Rūšiuoti HashMap pagal raktus
  • Rūšiuoti HashMap pagal reikšmes

Rūšiuoti HashMap pagal raktus

Yra šie būdai, kaip rūšiuoti HashMap pagal raktus:

  • Naudojant TreeMap
  • Naudojant LinkedHashMap

Kai naudojame LinkedHashMap, turėtume laikytis šio proceso:

Kai naudojame LinkedHashMap, turime nustatyti raktą. Konvertuokite rinkinį į sąrašą, rūšiuokite sąrašą ir pridėkite surūšiuotą sąrašą į LinkedHashMap ta pačia tvarka. Tas pats procesas, kurį atlikome pavyzdyje Rūšiuoti HashMap pagal vertę .

HashMap rūšiavimo pagal raktus pavyzdys

Šiame pavyzdyje mes naudojame TreeMap konstruktorių, norėdami surūšiuoti elementus ir perduoti HashMap klasės objektą kaip argumentą. Tai paprasčiausias būdas rūšiuoti HashMap pagal raktus.

 import java.util.Map; import java.util.HashMap; import java.util.TreeMap; import java.util.Iterator; public class SortHashMapByKeys { public static void main(String args[]) { //implementation of HashMap HashMap hm=new HashMap(); //addding keys and values to HashMap hm.put(23, 'Yash'); hm.put(17, 'Arun'); hm.put(15, 'Swarit'); hm.put(9, 'Neelesh'); Iterator it = hm.keySet().iterator(); System.out.println('Before Sorting'); while(it.hasNext()) { int key=(int)it.next(); System.out.println('Roll no: '+key+' name: '+hm.get(key)); } System.out.println('
'); Map map=new HashMap(); System.out.println('After Sorting'); //using TreeMap constructor to sort the HashMap TreeMap tm=new TreeMap (hm); Iterator itr=tm.keySet().iterator(); while(itr.hasNext()) { int key=(int)itr.next(); System.out.println('Roll no: '+key+' name: '+hm.get(key)); } } } 

Išvestis:

 Before Sorting Roll no: 17 name: Arun Roll no: 23 name: Yash Roll no: 9 name: Neelesh Roll no: 15 name: Swarit After Sorting Roll no: 9 name: Neelesh Roll no: 15 name: Swarit Roll no: 17 name: Arun Roll no: 23 name: Yash 

Rūšiuokite HashMap pagal reikšmes naudodami palyginimo sąsają

„Java“ programoje „HashMap“ rūšiavimas pagal reikšmes yra sudėtingas, nes nėra tiesioginio metodo. Norėdami rūšiuoti HashMap pagal reikšmes, turime sukurti a Palyginimas . Jis lygina du elementus pagal vertes.

Po to gaukite elementų rinkinį iš žemėlapio ir konvertuokite rinkinį į sąrašą. Naudoti Collections.sort (sąrašas) Metodas elementų sąrašui rūšiuoti pagal reikšmes perduodant tinkintą palyginiklį. Dabar sukurkite naują LinkedHashMap ir nukopijuokite surūšiuotus elementus į jį. Nuo LinkedHashMap garantuoja atvaizdų įterpimo tvarką. Gauname HashMap, kurio reikšmės yra surūšiuotos.

šrifto dydis lateksas

Yra nedidelis skirtumas tarp HashMap rūšiavimo pagal raktus ir reikšmes yra tas, kad jis gali turėti pasikartojančias reikšmes, bet ne pasikartojančius raktus. Negalime naudoti „TreeMap“ vertėms rūšiuoti, nes „TreeMap“ rūšiuoja elementus pagal raktus.

HashMap rūšiavimo pagal vertes pavyzdys

 import java.util.Collections; import java.util.Comparator; import java.util.HashMap; import java.util.Iterator; import java.util.LinkedHashMap; import java.util.LinkedList; import java.util.List; import java.util.Map; import java.util.Set; public class SortHashMapValue { public static void main(String[] args) { //implementing HashMap HashMap hm = new HashMap(); hm.put(6, 'Tushar'); hm.put(12, 'Ashu'); hm.put(5, 'Zoya'); hm.put(78, 'Yash'); hm.put(10, 'Praveen'); hm.put(67, 'Boby'); hm.put(1, 'Ritesh'); System.out.println('Before Sorting:'); Set set = hm.entrySet(); Iterator iterator = set.iterator(); while(iterator.hasNext()) { Map.Entry map = (Map.Entry)iterator.next(); System.out.println('Roll no: '+map.getKey()+' Name: '+map.getValue()); } Map map = sortValues(hm); System.out.println('
'); System.out.println('After Sorting:'); Set set2 = map.entrySet(); Iterator iterator2 = set2.iterator(); while(iterator2.hasNext()) { Map.Entry me2 = (Map.Entry)iterator2.next(); System.out.println('Roll no: '+me2.getKey()+' Name: '+me2.getValue()); } } //method to sort values private static HashMap sortValues(HashMap map) { List list = new LinkedList(map.entrySet()); //Custom Comparator Collections.sort(list, new Comparator() { public int compare(Object o1, Object o2) { return ((Comparable) ((Map.Entry) (o1)).getValue()).compareTo(((Map.Entry) (o2)).getValue()); } }); //copying the sorted list in HashMap to preserve the iteration order HashMap sortedHashMap = new LinkedHashMap(); for (Iterator it = list.iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry) it.next(); sortedHashMap.put(entry.getKey(), entry.getValue()); } return sortedHashMap; } } 

Išvestis:

 Before Sorting: Roll no: 1 Name: Ritesh Roll no: 67 Name: Boby Roll no: 5 Name: Zoya Roll no: 6 Name: Tushar Roll no: 10 Name: Praveen Roll no: 12 Name: Ashu Roll no: 78 Name: Yash After Sorting: Roll no: 12 Name: Ashu Roll no: 67 Name: Boby Roll no: 10 Name: Praveen Roll no: 1 Name: Ritesh Roll no: 6 Name: Tushar Roll no: 78 Name: Yash Roll no: 5 Name: Zoya