Вы не можете повторно использовать streamOfFiles Поток во время итерации по applications
!
Вам необходимо преобразовать streamOfFiles
из Stream<FileObject>
в List<FileObject>
, а затем:
List<FileObject> listOfFiles = streamOfFiles.collect(Collectors.toList());
List<Application> applications = this.applicationDao.findAll();
Collection<Pair<Application, FileObject>> files = applications.stream()
.flatMap(app -> listOfFiles.stream().map(file -> Pair.of(app, file)))
.collect(Collectors.toList());
Простой пример, доказывающий, что:
Stream<Integer> s = IntStream.range(0, 100).boxed();
IntStream.range(0, 100).boxed()
.flatMap(i -> s.map(j -> i * j))
.collect(Collectors.toList());
Выдает это исключение:
java.lang.IllegalStateException: поток уже был обработан илизакрыто