在我的add()
方法中,我必须插入一个节点,但代码恰好不会将该节点添加到列表中。 add()方法与迭代器一起使用,并将具有指定数据的节点添加到通过调用next()
返回的元素之前的列表中。
例如:
SimpleList<String> list = new SimpleList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.add("E");
System.out.println(l); // Output is [A,B,C,D,E]
ListIterator<String> iter = list.listIterator();
iter.add("1th");
System.out.println(l);
iter.add("1th")
之后的输出应该是[A, 1th, B, C, D, E]
,但仍然会给我[A, B, C, D, E]
。我试图使用调试器但仍然没有什么是清楚的。 smb请帮忙吗?
public class AListIterator implements ListIterator<T>{
protected Node<T> current; // Current node, return data on call to next()
protected Node<T> lastVisited = null; // Used for calls to remove
protected boolean lastMoveWasPrev = false; // Necessary for implementing previous()
// Move the iterator forward and return the passed-over element
public T next( ){
if(!hasNext( ))
throw new RuntimeException("Already at end of list");
T nextItem = current.data;
lastVisited = current;
current = current.next;
lastMoveWasPrev = false;
return nextItem;
}
public void add(T x){
this.next();
Node<T> newNode = new Node<T>(x);
newNode.prev = lastVisited;
newNode.next = current;
}