package entreprise; import java.util.Comparator; /** * Comparateur d'employés. Utilise le salaire pour comparer 2 employés. */ public class CompareSalaires implements Comparator<Employe> { /** vrai si on veut un tri croissant */ private boolean croissant; /** * Crée un comparateur. * * @param croissant * vrai si le comparateur compare suivant le montant du salaire : le * plus petit est celui qui a le plus petit salaire. Sinon, le plus * petit est celui qui a le plus grand salaire. */ public CompareSalaires(boolean croissant) { this.croissant = croissant; } /** * Par défaut, le comparateur sert pour un tri croissant. */ public CompareSalaires() { this(true); } /** * Permet d'utiliser le même comparateur pour des tris croissants ou * décroissants. */ public void setCroissant(boolean croissant) { this.croissant = croissant; } /** * Compare 2 employés suivant leur salaire. * * @return un nombre positif si le salaire de e1 est supérieur au salaire de * e2, 0 si les 2 salaires sont les mêmes, et négatif sinon. */ public int compare(Employe e1, Employe e2) { // La méthode static "compare" de Double convient parfaitement à ce traitement : return (croissant ? 1 : -1) * Double.compare(e1.getSalaire(), e2.getSalaire()); // On aurait aussi pu faire des simples comparaisons : // double s1 = e1.getSalaire(); // double s2 = e2.getSalaire(); // if (croissant) // // ordre croissant // if (s1 >= s2) // return 1; // else // return -1; // else // // ordre décroissant // if (s1 >= s2) // return -1; // else // return 1; } }