Я хочу создать коллекцию (или сразу Stream
), которая для данного целого числа создает коллекцию, содержащую n разделителей и остаток. Ниже приведен простой код, который создает это:
int initValue = 151;
int chanckValue = 50;
List<Integer> ints = new ArrayList<>();
int value = initValue;
while (value > chanckValue) {
ints.add(chanckValue);
value = value - chanckValue;
}
ints.add(value);
System.out.println(ints);
И вывод:
[50, 50, 50, 1]
Как это можно сделать идеально с Stream
? Желательно в компактном виде.
ОБНОВЛЕНИЕ
Это только пример использования. Умножение на второй карте можно заменить любой операцией:
Stream.of(3, 54, 150, 151, 230)
.map(value -> {
List<Integer> ints = new ArrayList<>();
while (value > chanckValue) {
ints.add(chanckValue);
value = value - chanckValue;
}
ints.add(value);
return ints;
})
.map(l -> l.stream()
.map(v -> v * v)
.collect(Collectors.toList())
)
.forEach(System.out::println);