Bjö*_*lex 7 java iterator copy list
我想要这样的东西:
public void CopyIteratorIntoList(Iterator<Foo> fooIterator) {
List<Foo> fooList = new ArrayList<Foo>();
fooList.addAll(fooIterator);
}
Run Code Online (Sandbox Code Playgroud)
这相当于:
public void CopyIteratorIntoList(Iterator<Foo> fooIterator) {
List<Foo> fooList = new ArrayList<Foo>();
while(fooIterator.hasNext())
fooList.add(fooIterator.next());
}
Run Code Online (Sandbox Code Playgroud)
API中是否有任何方法可以实现,或者这是唯一的方法吗?
不,但Google Collections库有一个很好的方法(如果你将使用它的一些其他功能 - 没有理由为此添加该依赖):
Iterators.addAll(targetCollection, sourceIterator);
Run Code Online (Sandbox Code Playgroud)
在Guava(谷歌新的通用Java库,取代google-collections)中,这可能很简单:
return Lists.newArrayList(fooIterator);
Run Code Online (Sandbox Code Playgroud)
或者如果列表是只读的:
return ImmutableList.copyOf(fooIterator);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
3920 次 |
最近记录: |