Mandroid:
Je dois comparer les objets d'une classe personnalisée, par exemple A.
La comparaison est simple basé sur un membre int, dire mem, de A.
Ainsi, dans la mise en œuvre de comparaison, je peux soit faire:
(A a1, A a2) -> {return (Integer)a1.getMem().compareTo(a2.getMem());}
Ou, je peux faire la comparaison de moi-même:
(A a1, A a2) -> {
if(a1.getMem() > a2.getMem()){
return 1;
}else{
if(a1.getMem() < a2.getMem()) {
return -1;
}else{
return 0
}
}
}
Lequel est une meilleure approche?
Première approche a des lignes beaucoup moins de code, mais à l'intérieur même compareTo fait ce que nous faisons dans la deuxième approche.
Ils étaient les suivants:
Il est généralement préférable de ne pas réinventer la roue. Par conséquent, la première approche est meilleure.
Vous pouvez même écrire moins de code avec Comparator.comparingInt
:
Comparator.comparingInt(A::getMem)