所以我尝试镜像 Java 的 ListIterator
的功能。我唯一困惑的是如何让 previous()
方法正常工作。
这就是我所拥有的。
public ListIterator300<Item> listIterator() {
return new ListIterator300<Item>() {
private Node<Item> n = first;
public boolean hasNext() {
return n.next != last;
}
public Item next() {
n = n.next;
return n.data;
}
public void remove() {
}
public boolean hasPrevious() {
return n.previous != first;
}
public Item previous() {
n = n.previous;
return n.data;
}
};
}
因此,我遇到的问题是 previous()
和 next()
方法在随后调用时返回相同的数字。现在我了解到内置的 ListIterator
使用游标。有什么一般性提示可以帮助我将其实现到我的代码中吗?
例如
[1 2 3 4]
下一个() -> 1
前一个() -> 1
下一个() -> 1
下一个() -> 2
最佳答案
而不是检查:
n.next != last;
检查:
n != last;
同样的:
n.previous != first;
将其替换为:
n != first;
你明白为什么吗?
关于java - 编写一个反射(reflect) Java 内置 Iterator 的 ListIterator,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37425896/