Вот один из способов:
Сначала создайте потоки из двух списков. Затем zip два потока. Чтобы узнать, как сжать два потока, см. здесь .
Теперь вы можете сделать:
zip(keys.stream(), values.stream(), (k, v) -> {
KeyValue keyValue = new KeyValue();
keyValue.setKey(k);
keyValue.setValue(v);
return keyValue;
}).collect(Collectors.toList());
Было бы действительно полезно, если KeyValue
имел AllArgsConstructor
, который выглядел примерно так:
public KeyValue(key k, value v) {
setKey(k);
setValue(v);
}
, потому что тогда вы могли бы просто сделать:
zip(keys.stream(), values.stream(), KeyValue::new)
.collect(Collectors.toList());