Bonjour,
J'utilise des listes de données que je dois pouvoir ordonner suivant plusieurs tris. Ces tris dépendent de la liste et chaque liste peut avoir plusieurs façons d'être triées.
J'ai donc créer une classe ComparatorDonnee qui implémente Comparator.
Donc on teste le type de donnée et on lui applique la comparaison nécessaire.
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 public class ComparatorDonnee implements Comparator { @Override public int compare(Object arg0, Object arg1) { if (arg0 instanceof CentreCivilisationGHM) return compareCentreCivilisation((CentreCivilisationGHM) arg0,(CentreCivilisationGHM)arg1); return 0; } private int compareCentreCivilisation(CentreCivilisationGHM arg0, CentreCivilisationGHM arg1) { int compare = arg0.getIdCiv() - arg1.getIdCiv(); if (compare != 0) return compare; return arg0.getIntervalle().compareTo(arg1.getIntervalle()); }
Lors de l'utilisation j'ai un avertissement :
Type safety: Unchecked invocation sort(List<CentreCivilisationGHM>, ComparatorDonnee) of the generic method sort(List<T>, Comparator<? super T>) of type Collections
sur la ligne : Collections.sort(liste, new ComparatorDonnee());
Quelqu'un a une idée ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 List<CentreCivilisationGHM> liste = new ArrayList<CentreCivilisationGHM>(); liste.addAll(ConnexionBase.getListeCentresCivilisations()); Collections.sort(liste, new ComparatorDonnee());
J'en profite pour demander s'il est nécessaire de redéfinir equal quand on implémente un comparateur ? Et si oui pourquoi ?
Partager