Sup*_*ker 5 java pointers iterator object
我需要一个列表来在应用程序中保存Enemy类的几个元素.这将作为一个对象池来提高效率,因为这个特定的类本来会被实例化并经常被杀掉.
到目前为止,我可能会使用链表,因为将非活动元素放到列表末尾非常有用.我的问题如下 - 在Java中,Iterator是否通过保持对它的引用(对于链表)提供对它正在访问的当前元素的直接访问,或者迭代到下一个元素需要迭代器从头开始循环(即不能提高效率,比如一个for循环,它总是需要回到链接列表的开头)?
从C的角度来看,我的问题是Iterator是否包含指向它正在访问的当前元素的指针,这样它就不必从头开始循环获取访问权限.
我对此做了一些研究,但我找不到答案.
它没有在Javadoc中记录,但你可以检查LinkedList's 的实现,listIterator看看它确实包含对List的当前和下一个元素的引用:
public ListIterator<E> listIterator(int index) {
return new ListItr(index);
}
private class ListItr implements ListIterator<E> {
private Entry<E> lastReturned = header;
private Entry<E> next;
private int nextIndex;
private int expectedModCount = modCount;
....
Run Code Online (Sandbox Code Playgroud)
它只需要在创建时迭代LinkedList(从开头或结尾)ListIterator,因为您可以在ListIterator构造时请求指向List的特定索引.