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