Salut,
Si j'utilise une list et que je veux la réutiliser, qu'est ce qui est mieux?
ouCode:list = new ArrayList();
MerciCode:list.clear();
Version imprimable
Salut,
Si j'utilise une list et que je veux la réutiliser, qu'est ce qui est mieux?
ouCode:list = new ArrayList();
MerciCode:list.clear();
Ça dépend des cas, pour plein de raisons.
Par exemple, si la première contient un million d'éléments et que la suivante n'en contient que quelques-uns, il vaut mieux faire new ArrayList() et laisser la précédente tomber dans le garbage collector.
Par contre, si les deux contiennent des millions d'éléments, la première a déjà réservé la mémoire nécessaire, et il vaut mieux faire un clear() dessus qu'en réserver une autre.
Et il faut aussi avoir à l'esprit que ta première liste peut être utilisée ailleurs.
Doncil faut regarder si la liste est exportée. Si c'est le cas, c'est à toi de voir en fonction du cas s'il faut travailler sur la même ou sur une nouvelle.
Sinon, comme l'a dit thelvin, si l'utilisation de la liste reste du même ordre, autant faire un clear.
le code du clear n'est pas (et c'est un euphémisme) des plus performants pour les grosses listes:
on garde en effet un tableau interne à la taille qu'avait la liste :aie:Code:
1
2
3
4
5
6
7
8
9 public void clear() { modCount++; // Let gc do its work for (int i = 0; i < size; i++) elementData[i] = null; size = 0; }
Je dirait, utiliser clear uniquement si
-> la liste n'est pas utilisée ailleurs et tu va recréer une liste de taille identique ou très proche.
OU
-> la liste est utilisée ailleurs et tu désire que toutes les références contiennent les nouvelles données
Le new est bien plus à propos dans la plus part de cas :mouarf:
Si la liste de départ était bien une ArrayList, pas mieux que Tchize.
Par contre si on juste typé la list en java.util.List, il peut y avoir des surprises avec un new ArrayList (je pense en particulier à de la persistance où l'objet conserve la liste des éléments ajoutés / supprimés, et où on ne peut faire l'impasse sur un clear).
Merci à vous tous.
En faite la list contient grand max 2000 objets et elle est vider quand on n'en a plus besoin et qu'on remet d'autres objets 1 par 1.