[JAVA] precision sur LinkedList listIterator

CbfB -  
 CbfB -
Salut tout le monde,

j'ai un peu de mal a saisir ce qui se passe exactement lors de l'appel de listIterator() dans une LinkedList. Ce qui m'embrouille le plus est le fait que la fonction renvoie une interface.

Donc j'aimerais juste confirmation(ou une explication) sur ce que je pense avoir compris.

Lorsque j'appelle
maliste.listIterator()

maliste me renvoie simplement un nouvel objet de type ListIterator qui contient une liste de tous les éléments contenus dans malist ?

Si c'est le cas on se retrouve donc avec deux objet qui contiennent chacun exactement la même liste ?
Et quel est le "vrai" type de cet objet renvoyé, puisque ListIterator n'est qu'une interface ?
Et a quoi sert l'iterateur ? on aurait pas pu implémenter "hasNext() next() remove()" directement dans la classe LinkedList ?

Merci d'avance a celui/ceux qui pourront m'éclairer :)
A voir également:

1 réponse

KX Messages postés 19031 Statut Modérateur 3 020
 
Un itérateur ce n'est pas une copie de ta liste, mais une référence aux objets qu'elle contient. Tu te déplaces sur ta liste (avec next et previous) pour ajouter (add), supprimer (remove) ou modifier (set) ton objet.
C'est un peu la différence qu'il peut y avoir entre un tableau tab[] et ses objets tab[i].

Quant au vrai type de l'itérateur c'est java.util.LinkedList$ListItr
System.out.print(new LinkedList().listIterator().getClass().getName());
0
CbfB
 
Merci :)
0