Дано:Объединение списка <T> и списка <Optional<T>>
List<Integer> integers = new ArrayList<>(Arrays.asList(
10, 12
));
List<Optional<Integer>> optionalIntegers = Arrays.asList(
Optional.of(5),
Optional.empty(),
Optional.of(3),
Optional.of(2),
Optional.empty()
);
List<Integer> unwrappedOptionals = optionalIntegers.stream()
.filter(Optional::isPresent)
.map(Optional::get)
.collect(Collectors.toList());
integers.addAll(unwrappedOptionals);
Есть ли лучший способ разворачивания Optional
с, или другой способ объединения их обоих в List<Integer>
? Очень сложно собрать их в новый List
, прежде чем делать addAll()
.
Спасибо! Хотя каждый ответ правильный, я чувствовал, что это решение, которое я предпочитаю, и обозначил его соответствующим образом. Для меня лучше всего использовать замену 'isPresent' и' get' с 'ifPresent'. –