Java LinkedList实现了接口Deque,它提供了方法descendingIterator。
以相反顺序返回此双端队列中元素的迭代器。元素将从上一个(尾)到第一个(头)的顺序返回。
我的建议是在你的类中实现接口,并获得反转迭代器。
linked list是一些数据结构,包含一些您应该用来获取实现的属性。链表的典型结构是一个元素指向下一个元素。你的情况你有支持双链表的实现。
private int size = 0; // size can never be < 0
private DLNode<E> head;
private DLNode<E> tail;
在代码中,您有代表双链接节点的DLNode
。这意味着您可以使用hasNex()
从head
移动到tail
,并使用hasPrevious()
从尾部移动到头部。
在你的类,你有类LinkedListIterator
,你可以用这种方法获得:
public ListIterator<E> listIterator(int index) {
if ((index < 0) || (index > size)) {
throw new IndexOutOfBoundsException("index " + index+ " is out of range: 0 to " + size);
}
return new LinkedListIterator<E>(index);
}
所以要打印的元素,你可以不喜欢这样。
public <T> void printLinkedListFromHead(LinkedList<T> list) {
for(ListIterator<T> iterator = list.listIterator(0); iterator.hasNext();) {
System.out.println(iterator.next());
}
}
您还应该为您的代码创建一个单独的类,您将在其中上下文不属于链表实现的代码。方法readObjects
和writeObjects
不属于类。与主要相同。
,如果您有标准的Java的LinkedList,你可以写这样的事情:
public <T> reversePrint(Deque deque) {
for (Iterator<T> iterator = deque.descendingIterator(); iterator .hasNext();){
System.out.println(iterator .next());
}
}
要缩小迭代的范围促进循环比,同时。
这显然是您的描述中的一个非JDK类;您需要在您的实现中至少发布代码以用于Iterator类。 –
这是在for +每个循环,所以它实现了Iterable,所以它提供了一个迭代器,它是JDK –
好吧,有很多,我不想泛滥的页面,所以我会设置一个外部链接 – Luminusss