sae fini les gars
This commit is contained in:
@@ -1,19 +1,40 @@
|
||||
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) {
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user