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
QCM-JavaQCM Java – Programmation Orientée ObjetQCM sur Java avec des réponses pour la préparation des entretiens d’embauche, des tests en ligne, aux examens et aux certifications. Ces questions et réponses…Lire plus  

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

 

Partagez cet article

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *