H2O*_*aCl 1 java iterator apache-commons
通常需要设置一个ArrayList<>.其中一个构造函数采用集合,但没有构造函数采用迭代器.
如果我有一个迭代器怎么办?有没有办法"伸手"到提供迭代器的集合才能使用ArrayList<>构造函数?
具体来说,我有org.apache.com的PropertiesConfiguration.getKeys()一部分提供的迭代器.
Bru*_*eis 11
没有这样的事,是Iterator的Collection.可以独立于a创建迭代器Collection.它可以从任何地方获得Iterable,或者你甚至可以创建一个实现迭代器的类.
但是,您可以获取ArrayList从Iterator通过迭代,并通过一个增加它的元素之一:
Iterator<X> it = ...;
List<X> list = new ArrayList<X>();
while (it.hasNext()) {
list.add(it.next());
}
Run Code Online (Sandbox Code Playgroud)
但请注意,对于每个可能的迭代器都无法可靠地完成此操作,因为迭代器可能会永远迭代,从而导致无限循环,最可能是一个OutOfMemoryError.
我建议你看看Google Guava,一个来自谷歌的实用工具库.它有一个名为Lists的类,它允许您执行以下操作:
Iterator<X> it = ...;
List<X> list = Lists.newArrayList(it);
Run Code Online (Sandbox Code Playgroud)
该库有许多方法对日常Java编码非常有用.它主要包含您想要的所有内容,但在标准Java 6 API中找不到.
| 归档时间: |
|
| 查看次数: |
3744 次 |
| 最近记录: |