Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 创建列表<;T>;迭代器中的实例<;T>;_Java_Collections_Iterator - Fatal编程技术网

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);