The following page étatsPourquoi est itérer plus préférable que l'accès aléatoire
L'interface List fournit quatre méthodes pour position (indexée) accès à la liste des éléments. Les listes (comme les tableaux Java) sont basées sur zéro. Notez que ces opérations peuvent s'exécuter dans le temps proportionnel à la valeur d'index pour certaines implémentations (la classe LinkedList, par exemple). Ainsi, itérer sur les éléments d'une liste est généralement préférable à en l'indexant si l'appelant ne connaît pas l'implémentation.
Qu'est-ce que cela signifie? Est-ce que cela veut dire que je préférerais
ListIterator<Integer> iterator = list.listIterator(0);
iterator.next()
iterator.next()
sur
list.get(1)
Si oui, pourquoi? Si l'implémentation de la liste sous-jacente est Array, get
sera exécutée à temps constant. Mais en utilisant l'itérateur c'est O(n)
. Qu'est-ce que j'oublie ici?
Veulent-ils dire que je devrais utiliser list.listIterator(1);
au lieu de list.get(1)
?
Je pense, dit la documentation est itérer mieux que l'accès aléatoire dans le cas où vous avez besoin de passer par tous ou presque tous les éléments de la liste. Si vous avez juste besoin de prendre le nième élément - il vaudrait mieux appeler get(). – greg
Que se passe-t-il si 'List' est un' 'LinkedList'? 'list.get (n)' nécessite de parcourir les éléments avant lui. La boucle devient 'O (n^2)' – bradimus
@greg est exactement correct. La phrase clé ici est "indexation à travers elle"; en d'autres termes accéder à tous les membres de la liste par index. – DavidW