2009-08-09 4 views
4

ich gerade Absicht init einen Iterator über eine generische verknüpfte Liste wie die (generic typ T scheint hier gelöscht werden, da die Website, um sie als Tag interpretiert) zu initialisierenwie ein Iterator

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

aber ich habe der Fehler:

was falsch ist „-Liste nicht gelöst werden können“?

Antwort

6

Zur weiteren Klärung der richtigen Antwort von Mykola: Sie versuchen, ein neues Objekt der Klasse list zu erstellen. Also wollen Sie einfach list.iterator() anrufen (was irgendwo darin new Iterator oder etwas ähnliches tut und Ihnen das zurückgibt).

Da sind Sie eindeutig mit Java 5 oder höher, aber der bessere Weg sein könnte, anstatt

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

statt dies zu tun:

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

Noch besser, nicht schreiben diese Methode überhaupt und stattdessen

Collections.sort(list); 
verwenden
11

entfernen new Stichwort:

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

Der neue Operator gefolgt Wort muss ein Klassenname sein. Hier gibt list.iterator() bereits ein Objekt zurück. Also ist an diesem Punkt das Neue unzertrennlich.