Мы можем использовать IntStream.range()
для генерации диапазона индексов и, используя эти индексы, мы можем заполнить каждый элемент из списка items
:
List<Item> list = IntStream.range(0, labels.size())
.mapToObj(idx -> { Item item = items.get(idx); item.setLabel(labels.get(idx)); return item; })
.collect(Collectors.toList());
Мы также можем поддерживать счетчик индекса final
AtomicInteger
, чтобы отслеживать индекс списка labels
и, наконец, использовать пользовательский Collector
:
final AtomicInteger idx = new AtomicInteger();
List<Item> result = items.stream()
.collect(ArrayList::new,
(list, item) -> { item.setLabel(labels.get(idx.getAndIncrement()));
list.add(item);
},
ArrayList::addAll);