Bonjour.
J'ai (peut-être) un soucis avec un arraylist de String mais je n'en suis pas sur...
J'utilise un bout de code qui ressemble à ça
Bien sur il y a une boucle et monCode et monCode2 changent. Le but est de n'avoir qu'une seule fois chaque code. Dans l'exemple que je donne l'arrayList ne contient qu'un seul code et une seule fois.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ArrayList maListe = new ArrayList(); String monCode = "F0001"; if (maListe.contains(monCode)==false) maListe.add(monCode); String monCode2 = "F0001"; if (maListe.contains(monCode2)==false) maListe.add(monCode2);
Ça fonctionne mais la nuit dernière on a eu un gros traitement, en gros il devait y avoir 350.000 code dans l'arrayList, et on a eu 90.000 doubles... (enfin double... sextuple, octuple etc). Donc 440.000 code au total.
Je sais que contains ça peut poser problème car arrayList contient des objets et la vérification se fait avec equals. Et ce n'est pas parce que 2 string ont la même valeur que c'est le même objet.
En java 1.5 et au delà on mettrait <String> devant l'arraylist mais ce mécanisme n'existe pas en 1.4.
Et impossible de reproduire le problème de double avec un volume "classique" (d'habitude c'est 1000 codes par traitement)
Le truc que je ne comprend pas c'est qu’apparemment ça fonctionne sauf avec un gros volume...
Soit j'ai un problème avec le contains soit j'en ai pas mais le comportement devrait être le même indépendamment du volume...
Est ce que j'utilise correctement l'arrayList avant de chercher dans une autre direction ?
Partager