Bonjour à tous,

Je souhaiterai savoir laquelle des deux méthodes suivantes est la plus optimisée selon vous. Bien sûr je pourrai faire des tests de performances, mais ces derniers sont prévus pour le mois prochain.

Voici donc le problème :
Je dispose des éléments suivants :

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
 
public class Machin {
    private String nom;
    private String prenom;
    private int age;
    private List<Machin> enfants;
 
    // getters & setters
}
 
String[] tab  = {"blah", "blih", "bloh"};
String[] tab2 = {"blah", "blih", "bloh", "bluh"};
 
List<Machin> list;  // list.size() = 3
List<Machin> list2; // list.size() = 4
Pour comparer les tableaux, facile :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
boolean diff = false;
for (int i=0; i<tab.length; i++) {
    diff = !tab[i].equals(tab2[i]);
}
Pour les listes il faudrait que j'en construise une 3ième
puis un

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
diff = !list.containsAll(listTmp);
Je pense que l'itération du tableau sera plus rapide SAUF si il y a possibilité de faire le containsAll sur une sous-liste de list2.

[edit]
Pour optimiser la comparaison des tableaux, éventuellement ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
boolean diff = false;
for (int i=0; i<tab.length && !(diff = tab[i].equals(tab1[i])); i++);