package fr.iutfbleau.sae.mpif; import java.util.Comparator; import java.util.Map; /** * Comparateur pour trier les entrées (symbole, longueur) lors de la reconstruction * des codes canoniques. * Le tri s'effectue d'abord par longueur croissante, puis par symbole croissant * en cas d'égalité de longueur. *

*/ public class ComparateurEntreeCanonique implements Comparator> { /** * Compare deux entrées (symbole, longueur). * * @param entree1 première entrée * @param entree2 deuxième entrée * @return un entier négatif, zéro, ou positif selon que la première entrée * est inférieure, égale ou supérieure à la seconde */ @Override public int compare(Map.Entry entree1, Map.Entry entree2) { // Comparer d'abord par longueur (valeur) int comparaisonLongueur = entree1.getValue().compareTo(entree2.getValue()); if (comparaisonLongueur != 0) { return comparaisonLongueur; } // Si les longueurs sont égales, comparer par symbole (clé) return entree1.getKey().compareTo(entree2.getKey()); } }