Java中迭代器的克隆

Java中迭代器的克隆,java,list,iterator,Java,List,Iterator,我有一个Java中的LinkedList,一个用于浏览列表的迭代器,我想克隆迭代器,对列表进行一些临时的“前瞻性”处理,以了解原始迭代器的位置 我知道在任何情况下都不可能克隆迭代器,但有没有办法将迭代器克隆到LinkedList(或保存并恢复其状态)?这是可能的,但Sun确保您不能(通过使类私有化) 但是,也许您可以使用列表迭代器()而不是普通的迭代器()来实现您想要的。ListIterator可以向两个方向移动。使用ListIterator可以存储下一个元素的索引,并可以基于该索引获得新的Li

我有一个Java中的LinkedList,一个用于浏览列表的迭代器,我想克隆迭代器,对列表进行一些临时的“前瞻性”处理,以了解原始迭代器的位置


我知道在任何情况下都不可能克隆迭代器,但有没有办法将迭代器克隆到LinkedList(或保存并恢复其状态)?

这是可能的,但Sun确保您不能(通过使类私有化)


但是,也许您可以使用
列表迭代器()
而不是普通的
迭代器()
来实现您想要的。
ListIterator
可以向两个方向移动。

使用
ListIterator
可以存储下一个元素的索引,并可以基于该索引获得新的
ListIterator

类似这样的内容(Java 1.5示例):

LinkedList=新建LinkedList();
ListIterator lit=list.ListIterator(0);
int index=lit.nextIndex();
ListIterator litclone=list.ListIterator(索引);

没关系。我将提前保存步骤数,然后返回恢复状态的步骤数。但是从索引中获取迭代器意味着从头开始再次浏览列表。在我看来,用标准库来生成一个本质上是指针的克隆,就像C++语言中的指针一样,是一种非常昂贵的方法。
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);