35 lines
1.2 KiB
Java
35 lines
1.2 KiB
Java
|
|
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.
|
||
|
|
* </p>
|
||
|
|
*/
|
||
|
|
public class ComparateurEntreeCanonique implements Comparator<Map.Entry<Integer, Integer>> {
|
||
|
|
|
||
|
|
/**
|
||
|
|
* 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<Integer, Integer> entree1, Map.Entry<Integer, Integer> 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());
|
||
|
|
}
|
||
|
|
}
|