2009-08-09 7 views
4

i juste l'intention d'initialiser un itérateur sur une liste chaînée générique comme celle (typ générique T semble être effacé ici depuis le site interpréter comme étiquette)comment initialiser un itérateur

public <T> LinkedList<T> sort(LinkedList<T> list){ 
    Iterator<T> iter = new list.iterator(); 
    ... 

mais je m'y suis l'erreur:

« liste ne peut pas être résolu »

ce qui ne va pas?

Répondre

6

Pour clarifier davantage la réponse correcte de Mykola: vous essayez de créer un nouvel objet de la classe list. Donc, vous voulez juste appeler list.iterator() (qui, quelque part à l'intérieur, est lui-même faire new Iterator ou quelque chose comme ça et vous renvoyer cela).

Puisque vous clairement en utilisant Java 5 ou au-dessus, cependant, la meilleure façon peut-être au lieu de faire

public <T> LinkedList<T> sort(LinkedList<T> list){ 
    Iterator<T> iter = new list.iterator(); 
    while (iter.hasNext()){ 
     T t = iter.next(); 
     ... 
    } 
} 

faire place ceci:

public <T> LinkedList<T> sort(LinkedList<T> list){ 
    for (T t : list){ 
     ... 
    } 
} 

Encore mieux, ne pas écrire cette méthode du tout et à la place utiliser

Collections.sort(list); 
11

Supprimer le mot-clé new:

Iterator<T> iter = list.iterator(); 
1

Le mot suivi par le nouvel opérateur doit être un nom de classe. Ici, list.iterator() renvoie déjà un objet. Donc, à ce stade, le nouveau n'est pas nécessaire.

Questions connexes