Files
SAE32_2025/src/fr/iutfbleau/sae/mhuffman/ComparateurCanonique.java
T
2026-01-07 19:27:03 +01:00

41 lines
1.4 KiB
Java

package fr.iutfbleau.sae.mhuffman;
import java.util.Comparator;
import java.util.Map;
/**
*
* Comparateur utilisé lors de la génération des codes canoniques.
* Il permet de trier des couples (symbole, code Huffman sous forme de chaîne).
*
* Le tri se fait dans cet ordre :
* 1. Par longueur du code (du plus court au plus long)
* 2. En cas d'égalité, par ordre croissant des symboles
*/
public class ComparateurCanonique implements Comparator<Map.Entry<Integer, String>> {
/**
* Compare deux entrées contenant un symbole et son code Huffman.
*
* @param entree1 première entrée à comparer
* @param entree2 deuxième entrée à comparer
* @return un entier négatif si entree1 doit venir avant entree2,
* positif si elle doit venir après,
* et zéro si elles sont équivalentes selon le tri.
*/
@Override
public int compare(Map.Entry<Integer, String> entree1, Map.Entry<Integer, String> entree2) {
int longueur1 = entree1.getValue().length();
int longueur2 = entree2.getValue().length();
// On compare d'abord la longueur des codes
if (longueur1 != longueur2) {
return longueur1 - longueur2;
}
// Si les longueurs sont identiques, on trie par symbole
return entree1.getKey() - entree2.getKey();
}
}