如何从Java Iterator中随机访问数据

eze*_*eze 1 java iterator

我从类中得到一个迭代器,我想得到该迭代器的第x个元素.我知道我可以将它加载到循环中的ArrayList中或检查计数器,但这似乎效率低下/丑陋.做这个的最好方式是什么?

我想的是,

List al = new ArrayList(myIterator);
  myval = al.get(6);
Run Code Online (Sandbox Code Playgroud)

但是那个构造函数是未定义的.谢谢.

Jim*_*son 9

a的定义Iterator不允许任意索引到某个位置.这就是它的定义方式.如果需要该功能,则必须将数据加载到可索引的集合中.

Iterator接口的要点是允许对集合进行顺序访问,而无需了解其大小.迭代器可以是仅向前的或双向的(ListIterator).它只是访问集合元素的一个特定模型.一个优点是它对集合大小没有任何意义,这可能太大而不能完全适合内存.通过仅允许顺序访问,实现可以在任何给定时刻自由地将部分集合保留在内存中.

如果需要将迭代器内容加载到列表中,则需要使用循环自行完成.


Lou*_*man 6

不,你已经命名了唯一的方法.你最终需要一个for循环迭代到适当的位置.

一些实用程序库有一些快捷方式可以Iterator内容加载到一个ArrayList或者获取一个n元素Iterator,但JDK中没有内置任何内容.