如何初始化一个迭代器

4

我只是想在一个泛型链表上初始化一个迭代器,就像这样(由于该站点将泛型类型 T 解释为标记,所以泛型类型 T 似乎已被擦除)

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

但是我遇到了错误:

"无法解析列表"

出了什么问题?

3个回答

12

删除new关键字:

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

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);

1

紧随new运算符后面的单词必须是一个类名。在这里,list.iterator()已经返回了一个对象。因此,在这一点上,new是不必要的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接