通常需要设置一个 ArrayList<>
.其中一个构造函数采用集合,但没有采用迭代器的构造函数。
如果我有一个迭代器怎么办?有没有办法“到达”提供迭代器的集合以便使用 ArrayList<>
构造函数?
具体来说,我有 PropertiesConfiguration.getKeys()
提供的迭代器这是 org.apache.commons 的一部分.
最佳答案
没有这样的东西,Iterator
的Collection
。迭代器可以独立于 Collection
创建。它可以从任何 Iterable
获得,或者您甚至可以创建一个实现迭代器的类。
但是,您可以从 Iterator
中获取一个 ArrayList
,方法是迭代它并一个一个地添加它的元素:
Iterator<X> it = ...;
List<X> list = new ArrayList<X>();
while (it.hasNext()) {
list.add(it.next());
}
但是请注意,这不能对每个可能的迭代器都可靠地完成,因为迭代器有可能永远迭代,从而导致无限循环,很可能导致 OutOfMemoryError
。
我建议你看看Google Guava ,一个来自谷歌的实用程序库。它有一个名为 Lists 的类,它允许您执行以下操作:
Iterator<X> it = ...;
List<X> list = Lists.newArrayList(it);
这个库有大量的方法对日常 Java 编码非常有用。它包含了您想要但在标准 Java 6 API 中找不到的大部分内容。
关于java - 如何在 Java 中获取迭代器的集合?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6971318/