【发布时间】:2016-05-25 00:12:56
【问题描述】:
所以我试图反映 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]
next() -> 1
previous() -> 1
next() -> 1
next() -> 2
【问题讨论】:
-
@Joni 数据初始化为空。如果有用的话,我可以发布其余的代码
-
这一定是某人的功课。一天前我刚刚在这里回答了同样的问题:stackoverflow.com/questions/37403794/…
-
使用@DanielWiddis 符号来引起我的注意。我通常不会收到一般 cmets 的通知。
-
在您的
previous()方法中更新n = n.previous之前,您没有接受我建议将n.data存储在临时变量中的更改。添加Node<Item> temp = n.data;然后是n = n.previous;,然后是return temp;。您还有其他具体问题吗? -
@DanielWiddis 我会在稍后发布详细信息