Java 创建列表<;T>;迭代器中的实例<;T>;
有人知道从迭代器实例创建列表是否有标准方法吗?使用Java 创建列表<;T>;迭代器中的实例<;T>;,java,collections,iterator,Java,Collections,Iterator,有人知道从迭代器实例创建列表是否有标准方法吗?使用迭代器获取每个元素并将其添加到列表中 List<String> list = new LinkedList<String>(); while(iter.hasNext()) { // iter is of type Iterator<String> list.add(iter.next()); } List List=newlinkedlist(); 而(iter.hasNext()){//iter
迭代器
获取每个元素并将其添加到列表中
List<String> list = new LinkedList<String>();
while(iter.hasNext()) { // iter is of type Iterator<String>
list.add(iter.next());
}
List List=newlinkedlist();
而(iter.hasNext()){//iter是迭代器类型
list.add(iter.next());
}
尝试以下方法:
public T List<T> listFromIterator(Iterator<T> iterator) {
List<T> result = new LinkedList<T>();
while(iterator.hasNext()) {
result.add(iterator.next());
}
}
这是我从列表转换为迭代器的方法,反之亦然
ArrayList arrayList = new ArrayList();
// add elements to the array list
arrayList.add("C");
arrayList.add("A");
arrayList.add("E");
arrayList.add("B");
arrayList.add("D");
arrayList.add("F");
// use iterator to display contents of arrayList
System.out.print("Original contents of arrayList: ");
Iterator iterator = arrayList.iterator();
ArrayList arrayList2 = new ArrayList();
while(iterator.hasNext()) {
Object element = iterator.next();
arrayList2.add(element);
System.out.print(element + " ");
}
我倾向于使用Guava,因为我通常依赖Guava,而且它已经存在。我有这个需求,作为Apache Commons的用户,我就是这么做的:
IteratorUtils.toList(iterator);
Javadoc here:在Java 8中,您可以使用以下方法(尽管足够详细):
Iterator迭代器=。。。;
List List=StreamSupport.stream(Spliterators.spliteratorUnknownSize(迭代器,Spliterator.ORDERED),false)
.collect(Collectors.toList());
或
Iterator迭代器=。。。;
List List=新建ArrayList();//或LinkedList(),如果更相关(添加LinkedList会更快)
迭代器.forEachRemaining(list::add);
您不能从迭代器创建列表,您可以在其元素上创建列表和迭代器。从迭代器创建列表
没有任何意义。这就像从一个索引创建一个数组!如果您的迭代器已经调用了其“next()”函数,您将永远无法检索以前的元素。@hawaii.five-0如果您将迭代器中的每个元素添加到一个新列表中,您将从迭代器中创建一个列表…谢谢,这就是我所做的,但是我希望有一些神奇的方法可以帮助我:)如果你想要神奇的方法,你应该使用第三方库代码>。
IteratorUtils.toList(iterator);
Iterator<String> iterator = ...;
List<String> list = StreamSupport.stream(Spliterators.spliteratorUnknownSize(iterator, Spliterator.ORDERED), false)
.collect(Collectors.toList());
Iterator<String> iterator = ...;
List<String> list = new ArrayList<>(); // or LinkedList() if more relevant (adding being faster for LinkedList)
iterator.forEachRemaining(list::add);