您好我是Java的新手,并且为双重链接列表构建嵌套的Iterator类存在此问题。我不确定如何编写public E next()
方法让它迭代 Doubly-Linked-List 。
非常感谢任何帮助!
private class DoubleListIterator implements Iterator<E> {
// instance variable
private Node current=head;
private Node last;
private int index=0;
public boolean hasNext() {
return index < N;
}
public E next() {
if (!hasNext()) throw new NoSuchElementException();
}
public void remove() { throw new UnsupportedOperationException(); }
}// end class ListIterator
答案 0 :(得分:3)
试试这个:
public boolean hasNext() {
return current != null;
}
public E next() {
if (!hasNext()) throw new NoSuchElementException();
E tmp = current.item;
current = current.next; // if next is null, hasNext will return false.
return tmp;
}
同时删除last
和index
,您也不需要它们。
答案 1 :(得分:0)
public E next() {
if (!hasNext()) throw new NoSuchElementException();
current = current.next;
return current;
}
答案 2 :(得分:0)
您可能需要查看java.util.LinkedList:
List和Deque接口的双链表实现。实现所有可选列表操作,并允许所有元素(包括null)。 对于双向链表,所有操作都可以预期。索引到列表中的操作将从开头或结尾遍历列表,以较接近指定索引为准。
LinkedList<String> linkedlist = new LinkedList<String>();
//add(String Element) is used for adding
linkedlist.add("Item1");
linkedlist.add("Item5");
linkedlist.add("Item3");
/*Add First and Last Element*/
linkedlist.addFirst("First Item");
linkedlist.addLast("Last Item");
//you can get the iterator by
ListIterator<String> it = linkedlist.listIterator();