Je veux trier les objets en fonction des valeurs booléennes et je veux trier les valeurs vraies avant les valeurs fausses.Quelle utilisation de la méthode compareTo est plus compréhensible?
Laquelle de ces implémentations de compareTo est plus lisible?
Utiliser -1 pour modifier le comportement par défaut
public class Example implements Comparable<Example>{
Boolean isOk;
public int compareTo(Example o) {
return -1 * this.isOk.compareTo(o.isOk);
}
}
ou sur les côtés échange de la méthode booléenne # compareTo?
public class ExampleTwo implements Comparable<ExampleTwo>{
Boolean isOk;
public int compareTo(ExampleTwo o) {
return o.isOk.compareTo(this.isOk);
}
}
Utiliser '-1 *' introduit une subtile bug si la méthode 'compareTo()' renvoie jamais 'Integer.MIN_VALUE', car' Integer.MIN_VALUE * -1 == Integer.MIN_VALUE'. Pour cette raison, je n'écrirais jamais une méthode 'compareTo()' qui pourrait renvoyer de telles valeurs extrêmes, mais cela serait absolument conforme à la spécification, donc vous devez être capable de le gérer. –
@Joachim: J'écrivais juste la même chose dans ma réponse :) –