2017-05-21 1 views
-2

Était lu sur l'API de ListIterator qui fournit beaucoup de fonctions pour naviguer/modifier une liste liée. Mais ma question est pourquoi avons-nous besoin d'un ListIterator pour naviguer en avant et en arrière dans la liste si nous pouvons utiliser la méthode get() pour indexer les éléments.Pourquoi avons-nous besoin d'un ListIterator?

+2

L'accès aux éléments d'une liste chaînée par index est une opération 'O (n)'. À une estimation, 'ListIterator' résout probablement cela en étant conscient que vous effectuez une itération simple et que vous pouvez ainsi récupérer le prochain noeud' O (1) 'temps. – CollinD

+0

@CollinD Merci pour la réponse. Je n'ai pas pensé à la complexité de calcul. Bien dit! – computer

Répondre

1

Pour la même raison, vous avez besoin d'un Iterator, plus son API supplémentaire. L'itérateur connaît le meilleur moyen d'avancer et de reculer sur la liste. Mieux vaut dans ce cas que vous. List.get(int index) est O (N) sur une liste chaînée; poursuivre les liens est O (1).