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

时间:2012-06-06 17:59:06

标签: java iterator

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

我想的是,

List al = new ArrayList(myIterator);
  myval = al.get(6);

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

2 个答案:

答案 0 :(得分:9)

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

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

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

答案 1 :(得分:6)

不,你已经找到了唯一的方法。您最终需要for循环来迭代到适当的位置。

一些实用程序库具有load an Iterator's contents into an ArrayListget the nth element of an Iterator的快捷方式,但JDK中没有内置任何内容。