8
イテレータをストリームに変換する方法は?
私は、イテレータをストリームに「見る」Iteratorために、Streamまたはより具体的に変換する簡潔な方法を探しています。 パフォーマンス上の理由から、新しいリストではイテレータのコピーを避けたいと思います。 Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator(); Collection<String> copyList = new ArrayList<String>(); sourceIterator.forEachRemaining(copyList::add); Stream<String> targetStream = copyList.stream(); コメントのいくつかの提案に基づいて、私も使用しようとしましたStream.generate: public static void main(String[] args) throws Exception { Iterator<String> sourceIterator = Arrays.asList("A", "B", "C").iterator(); Stream<String> targetStream = Stream.generate(sourceIterator::next); targetStream.forEach(System.out::println); } ただし、NoSuchElementException(の呼び出しがないためhasNext) Exception in thread "main" java.util.NoSuchElementException at java.util.AbstractList$Itr.next(AbstractList.java:364) at Main$$Lambda$1/1175962212.get(Unknown Source) …