В качестве примера, я хочу, чтобы создать бесконечный поток групп десятков так:Как уменьшить поток в другой поток в Java8?
0=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
1=[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
2=[20, 21, 22, 23, 24, 25, 26, 27, 28, 29]
...
Я хочу использовать inifinte поток Интс как вход, который затем должен быть сгруппированы. Если первый поток итерации 10 раз, результирующий поток должен быть повторен только один раз.
Мой рабочий, но не очень элегантный код выглядит следующим образом:
// create a stream from 0 (inclusive) to 100 (exclusive)
IntStream.iterate(0, i -> i+1).boxed().limit(100)
// slow down
.peek((i) -> {try {Thread.sleep(50);} catch (InterruptedException e) {}})
// group by tens
/* ugly: */.collect(Collectors.groupingBy(i -> i/10)).entrySet()
/* not working: */ //.makeSequentialGroups(i -> i/10)
// print to console
.forEach(System.out::println);
Как сделать группы с Int потока, без необходимости собирать и повторно поток? (Если возможно, даже без использования бокса)
Вам не нужно создавать другой поток, вы можете использовать метод 'forEach' в' Set'. – Bubletan
@Bubletan Спасибо за ваш намек, я обновил свой вопрос, чтобы не содержать устаревшего 'forEach' больше – slartidan