2009-08-09 69 views
4

我只是意向初始化過這樣一個通用的鏈表的迭代器(通用典型牛逼似乎在這裏被刪除,因爲該網站把它解釋爲標籤)如何初始化一個迭代器

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

,但我得到錯誤:

「list can not be resolved」

出了什麼問題?

回答

6

爲了進一步闡明Mykola的正確答案:您正嘗試創建類list的新對象。所以你只想打電話給list.iterator()(在裏面的某個地方,它本身正在做new Iterator或類似的東西,然後把它返回給你)。

既然你清楚地使用Java 5或以上,不過,更好的方法可能是,而不是做

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

,而不是這樣做:

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

猶未了,不寫該方法,而不是使用

Collections.sort(list); 
11

刪除new關鍵字:

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

的字,接着新運營商必須是一個類名。這裏list.iterator()已經返回一個Object。所以在這一點上新的是不必要的。