Tri d'une List en fonction de 3 criteres (nom, DateDebut, DateFin)
J'ai implementé un comparator pour faire le tri en fonction de 3 criteres (nom, dateDebut et dateFin).
J'ai appelé la méthode Collections.sort(List, new ObjetVoComparator())
Apres, J'ai affiché la liste trié et les elements ne le sont pas.
Voici le code du comparator :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
@Override
public int compare(AffretementVO pO1, AffretementVO pO2) {
String sousTraitant1 = pO1.getSousTraitant();
String sousTraitant2 = pO2.getSousTraitant();
Date dateDebut1 = pO1.getDebutPeriode();
Date dateDebut2 = pO2.getDebutPeriode();
Date dateFin1 = pO1.getFinPeriode();
Date dateFin2 = pO2.getFinPeriode();
if(!sousTraitant1.equals(sousTraitant2)) {
return 0;
} else {
if(!dateDebut1.equals(dateDebut2)) {
return 0;
} else {
if(!dateFin1.equals(dateFin2)) {
return 0;
} else {
return 1;
}
}
}
} |
LOG Affichée :
TRP88170-0002 - 2011-12-05 - 2011-12-11
TRP88170-0002 - 2011-11-28 - 2011-12-04
TRP88170-0002 - 2011-10-10 - 2011-10-20
TRP88170-0002 - 2011-12-05 - 2011-12-11
TRP88170-0002 - 2011-11-28 - 2011-12-04
TRP88170-0002 - 2011-11-28 - 2011-12-04
TRP88170-0002 - 2011-11-28 - 2011-12-04
Le tri sur le premier critere nom se fait correctement mais les dates non, le résultat attendu est le suivant :
TRP88170-0002 - 2011-10-10 - 2011-10-20
TRP88170-0002 - 2011-11-28 - 2011-12-04
TRP88170-0002 - 2011-11-28 - 2011-12-04
TRP88170-0002 - 2011-11-28 - 2011-12-04
TRP88170-0002 - 2011-11-28 - 2011-12-04
TRP88170-0002 - 2011-12-05 - 2011-12-11
TRP88170-0002 - 2011-12-05 - 2011-12-11