Utiliser equals ou compare
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 :
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 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;
}
... |
Celle-ci répond tout à fait à mon attente en terme de tri.
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