logo

Како сортирати ХасхМап у Јави

Јава ХасхМап подразумевано не чува никакав редослед. Ако постоји потреба за сортирањем ХасхМап-а, сортирамо га експлицитно на основу захтева. Јава пружа опцију сортирања ХасхМап-а на основу кључева и вредности. У овом одељку ћемо научити како да сортирамо ХасхМап према кључевима и вредностима.

  • Сортирај ХасхМап по кључевима
  • Сортирај ХасхМап по вредностима

Сортирај ХасхМап по кључевима

Постоје следећи начини да сортирате ХасхМап по кључевима:

  • Коришћењем ТрееМап
  • Коришћењем ЛинкедХасхМап

Када користимо ЛинкедХасхМап, требало би да следимо процес:

Када користимо ЛинкедХасхМап, онда морамо да поставимо Кеи. Претворите скуп у листу, сортирајте листу и затим додајте сортирану листу у ЛинкедХасхМап истим редоследом. Исти процес који смо урадили у примеру Сортирај ХасхМап по вредности .

Пример сортирања ХасхМап-а по кључевима

У следећем примеру користимо ТрееМап конструктор да сортирамо елементе и проследимо објекат класе ХасхМап као аргумент. Ово је најједноставнији начин да сортирате ХасхМап по кључевима.

 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)); } } } 

Излаз:

 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 

Сортирајте ХасхМап по вредностима помоћу интерфејса за поређење

У Јави, сортирање ХасхМап-а по вредностима је компликовано јер не постоји директна метода. Да бисмо сортирали ХасхМап по вредностима, морамо да креирамо а Цомпаратор . Упоређује два елемента на основу вредности.

Након тога узмите скуп елемената са мапе и конвертујте сет у листу. Користити Цоллецтионс.сорт(Лист) метод за сортирање листе елемената по вредностима преношењем прилагођеног компаратора. Сада креирајте нову ЛинкедХасхМап и копирајте сортиране елементе у то. Од ЛинкедХасхМап гарантује редослед уметања пресликавања. Добијамо ХасхМап чије су вредности у сортираном редоследу.

Мадхури је рекао хајде

Постоји мала разлика између сортирања ХасхМап-а по кључевима и вредностима у томе што може имати дупле вредности, али не и дупликате кључева. Не можемо да користимо ТрееМап за сортирање вредности јер ТрееМап сортира елементе по кључевима.

Пример сортирања ХасхМап-а по вредностима

 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; } } 

Излаз:

 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