我在Java中有一个LinkedList,一个浏览列表的迭代器,我想克隆迭代器,根据原始迭代器的位置对列表进行一些临时的“向前看”处理。
据我所知,在任何情况下都无法克隆迭代器,但有没有办法将迭代器克隆到LinkedList(或保存并恢复其状态)?
答案 0 :(得分:11)
这是可能的,但Sun确保你不能(通过让这个课程成为私人)。
但也许您可以使用listIterator()
而非普通iterator()
来实现您想要的效果。 ListIterator
可以向两个方向移动。
答案 1 :(得分:1)
使用ListIterator
,您可以存储下一个元素的索引,并可以根据该索引获得新的ListIterator
。
像这样(Java 1.5示例):
LinkedList<Integer> list = new LinkedList<Integer>();
ListIterator<Integer> lit = list.listIterator(0);
<<do something here >>
int index = lit.nextIndex();
ListIterator<Integer> litclone = list.listIterator(index);