Bonjour,
Entre un iterator et une boucle (boucle for, while, do/while) en java, lequel est
le plus rapide?
Version imprimable
Bonjour,
Entre un iterator et une boucle (boucle for, while, do/while) en java, lequel est
le plus rapide?
Pour un ArrayList, les performances seront très légèrement meilleures avec un for, mais ca reste vraiment marginal.
Par contre si tu as une liste chainée, les performances vont devenir catastrophique si tu utilises le for directement au lieu d'un itérateur.
Je manière générale mieux vaut utiliser foreach ou l'itérateur, a moins d'être sur de ce que tu fais.
Salut et merci pour ta réponse,
est ce qu'il est possible par exemple dans une ArrayList de changer dynamiquement un élément de cette liste.
Je pense à un truc comme :
Code:
1
2
3
4
5
6 for (MyObject o : ArrayList<MyObject>){ if (o.getName().equals("un nom passé en param")){ o.setVisibility (false); } }
Bien sur.
Comme l'a spécifié Uther pour une liste RandomAccess (ArrayList par exemple), la boucle for la plus rapide est de la forme
Sinon faut utiliser Iterator pour une Collection don't tu ne sais pas vraiment son type réel.Code:
1
2
3
4 for(int i = 0, size = list.size(); i < size; i++) { MyObject o = (MyObject) list.get(i); //...etc }
Bah ok merci pour l'info
Oui c'est vrai, mais la différence est négligeable. À mon avis il vaut mieux se concentrer sur la lisibilité du code et aussi se passer d'un index i dont on n'a pas besoin.
Une boucle foreach, je dirais. Et dans tous les cas, puisque ça n'a pas d'importance.
A noter que le foreach reviens exactement à la même chose qu'utiliser un Iterateur.