Bonjour au forum !

Je planche actuellement sur un projet, et j'ai un temps d'exécution beaucoup trop élevé.
J'ai identifié la cause comme étant une méthode qui effectue une double boucle sur un ArrayList<List<String>>().

Voici mon code que je vous décrirai ensuite :

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
 
public List<List<String>> filteredMaterial(List<List<String>> material) {
        List<String> filteredMaterialTemp = new ArrayList<>();
        FMaterial = new ArrayList<>();
        for (int i = 0; i < material.size(); i++) {
 
// On parcourt material pour éviter les doublons de "valeur" pour un même "name" 
 
            for (int j = i + 1; j < material.size(); j++) {
                if (material.get(i).name.equals(material.get(j).name) && !material.get(i).valeur.equals(material.get(j).valeur)) {
                    FMaterial.add(material.get(i));
                }
            }
        }
        System.out.println("Taille du materiel " + material.size());
// retourne 106 000
        return FMaterial;
    }
Je fais donc une double boucle pour ne garder que les éléments qui existent au moins 2 fois sous le même "name" avec une "valeur" différente.
J'aimerai éviter cette double boucle.
Une idée?

D'avance merci !!!