【发布时间】:2018-06-27 09:59:41
【问题描述】:
我已经编写了自己的LinkedList,因为我不想手动迭代并总是检查null。我想我应该编写自己的 Iterator 方法来返回一个迭代器。
我的问题是,我真的不知道如何将我的 List 和我的 Iterator 链接在一起。我认为这是我的TypeMismatch 问题的更深层原因。
public class SearchList<T extends Comparable<T>> implements List<T> {
public class Node {
T obj;
Node next;
int occurences;
public Node() {
this.obj = null;
this.next = null;
this.occurences = 1;
}
}
private Node head;
//Here are my List methods
}
这是迭代器方法
@Override
public Iterator<T> iterator() {
Node current = head;
Iterator<T> iterator = new Iterator<T>() {
@Override
public boolean hasNext() {
return current.next != null;
}
@Override
public T next() {
return current.next;
}
};
return iterator;
}
Intellij 抱怨迭代器的重写 next() 方法中的类型不匹配。
那么我该如何以正确的方式实现呢?
【问题讨论】:
-
current.next是Node,而不是T。应该是current.next.obj。如果您希望迭代器实际遍历列表,还需要将current设置为下一个节点。
标签: java generics types iterator