Bonjour.
J'ai une question sur les méthode equals ou compare. Je vous présente donc ma problématique.
J'ai une classe Activité (qui n'étend ou n'implémente rien) contenant des long, des int, des Dates, d'autres objets...
Afin de pouvoir faire des tris sur des listes d'activité, j'ai une classe ActiviteComparator implémentant Comparator<Activite> qui contient une méthode compare
Extrait de cette classe ActiviteComparator :
Celle-ci répond tout à fait à mon attente en terme de tri.
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
29
30
31
32
33
34
35
36
37
38 ... public ActiviteComparator(String tri) { this.tri = tri; } public int compare(Activite a1, Activite a2) { if(TRI_MATRICULE_DATE_DEBUT.equals(tri)) { int compareMatriculeMarin = a1.getMarin().getMaMatcle().compareTo(a2.getMarin().getMaMatcle()); if(compareMatriculeMarin==0) { //même marin, je compare les date de début d'activité return a1.getAcDatDeb().compareTo(a2.getAcDatDeb()); } return compareMatriculeMarin; } else if(TRI_NOM_PRENOM_DATE_DEBUT.equals(tri)) { int compareNomMarin = a1.getMarin().getMaNomuse().compareTo(a2.getMarin().getMaNomuse()); if(compareNomMarin==0) { //même marin, je compare les prénoms int comparePrenomMarin = a1.getMarin().getMaPrenom().compareTo(a2.getMarin().getMaPrenom()); if(comparePrenomMarin==0) { //même prénom, je compare les date de début d'activité return a1.getAcDatDeb().compareTo(a2.getAcDatDeb()); } return comparePrenomMarin; } return compareNomMarin; } ...
J'ai un nouveau besoin :
A partir de deux listes d'activite A et B, je dois comparer les "Activité" en différence dans une liste par rapport à une autre et identifier :
- les modifications
- les créations
- les suppressions
J'ai donc l'idée de boucler sur les listes pour faire une comparaison entre chaque Activité de chaque liste.
J'arrive donc à ma question :
Vaut-il mieux :
- que j'utilise ma méthode déjà existante compare de mon comparator (en comparant champs à champs.)
- définir une méthode equals dans la classe Activité.
Y-aurait-il une différence en terme de rapidité?
Merci d'avance pour vos réponse
Partager