Trier un HashMap par clé et par valeur en java
On sait déjà que HashMap ne maintient aucun ordre par défaut. Donc pour trier un HashMap, on doit le trier explicitement en fonction de l’exigence. Dans ce tutoriel, nous allons apprendre à trier un HashMap par clés à l’aide de TreeMap et par valeurs à l’aide de Comparator.
Trier un HashMap par clé
Dans cet exemple, nous allons trier un HashMap en fonction des clés en utilisant la classe TreeMap.
import java.util.*; public class SortHashmap { public static void main(String[] args) { HashMap<Integer, String> hashmap = new HashMap<Integer, String>(); hashmap.put(7, "B"); hashmap.put(15, "D"); hashmap.put(2, "X"); hashmap.put(98, "U"); Map<Integer, String> map = new TreeMap<Integer, String>(hashmap); Set set = map.entrySet(); Iterator it = set.iterator(); while(it.hasNext()) { Map.Entry entry = (Map.Entry)it.next(); System.out.println(entry.getKey() + ": "+entry.getValue()); } } }
La sortie:
2: X 7: B 15: D 98: U
Trier un HashMap par valeur
Dans cet exemple, nous allons trier un HashMap en fonction des clés en utilisant l’interface Comparator.
import java.util.*; public class SortHashmap { public static void main(String[] args) { HashMap<Integer, String> hashmap = new HashMap<Integer, String>(); hashmap.put(7, "B"); hashmap.put(15, "D"); hashmap.put(2, "X"); hashmap.put(98, "U"); Map<Integer, String> map = sort(hashmap); Set set2 = map.entrySet(); Iterator it = set2.iterator(); while(it.hasNext()) { Map.Entry entry = (Map.Entry)it.next(); System.out.println(entry.getKey() + ": "+entry.getValue()); } } private static HashMap sort(HashMap map) { List linkedlist = new LinkedList(map.entrySet()); Collections.sort(linkedlist, new Comparator() { public int compare(Object o1, Object o2) { return ((Comparable) ((Map.Entry) (o1)).getValue()) .compareTo(((Map.Entry) (o2)).getValue()); } }); HashMap sortedHashMap = new LinkedHashMap(); for (Iterator it = linkedlist.iterator(); it.hasNext();) { Map.Entry entry = (Map.Entry) it.next(); sortedHashMap.put(entry.getKey(), entry.getValue()); } return sortedHashMap; } }
La sortie:
2: X 7: B 15: D 98: U