如何初始化迭代器

时间:2009-08-09 15:04:53

标签: java iterator linked-list

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

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

但是我收到了错误:

“列表无法解析”

怎么了?

3 个答案:

答案 0 :(得分:12)

删除new关键字:

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

答案 1 :(得分: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);

答案 2 :(得分:1)

new运算符后跟的单词必须是Class名称。这里list.iterator()已经返回一个Object。所以在这一点上,新的是不必要的。