我有相当于,从这里:
Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator();
sourceIterator.forEachRemaining(source -> System.out.println(source)); // prints out all elements
Iterable<String> iterable = () -> sourceIterator;
List<String> targetList = StreamSupport.stream(iterable.spliterator(), false).
.collect(Collectors.toList());
System.out.println(targetList.isEmpty()) // prints true
在我想出进行转换的方法之前,我已经添加了一些调试打印语句来帮助我。但事实证明,流是空的。所以我想知道我的内容或我的方法是否不太正确?
阅读forEachRemaining
它说:
对每个剩余元素执行给定的操作,直到所有元素都已处理或该操作引发异常。如果指定了迭代顺序,则按迭代顺序执行操作。操作引发的异常将转发给调用者。
它看起来并没有从迭代器中删除任何东西,所以我不认为是这样。