如何初始化迭代器

mki*_*ind 4 java iterator linked-list

我只是想在这样的通用链表上初始化一个迭代器(泛型T似乎在这里被删除,因为网站将其解释为标签)

public <T> LinkedList<T> sort(LinkedList<T> list){
    Iterator<T> iter = new list.iterator();
    ...
Run Code Online (Sandbox Code Playgroud)

但我得到了错误:

"列表无法解决"

怎么了?

Myk*_*yev 12

删除new关键字:

Iterator<T> iter = list.iterator();
Run Code Online (Sandbox Code Playgroud)


Jon*_*ght 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();
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

而是这样做:

public <T> LinkedList<T> sort(LinkedList<T> list){
    for (T t : list){
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

更好的是,根本不要写那个方法而是使用

Collections.sort(list);
Run Code Online (Sandbox Code Playgroud)