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 : Sélectionner tout - Visualiser dans une fenêtre à part
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