gpt4 book ai didi

java - 合并列表 和列表 >

转载 作者:行者123 更新时间:2023-12-02 09:03:03 25 4
gpt4 key购买 nike

给定:

    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 s,或以其他方式将它们合并为 List<Integer> ?将它们收集到一个新的List中感觉非常浪费。在做之前addAll() .

最佳答案

使用新的 Java-9 Optional.stream()方法可以这样写:

optionalIntegers.stream()
.flatMap(Optional::stream)
.forEach(integers::add);

在 Java-9 之前,您可以将此类方法添加到您自己的实用程序类中:

public class StreamUtil {
public static <T> Stream<T> fromOptional(Optional<T> opt) {
return opt.isEmpty() ? Stream.empty() : Stream.of(opt.get());
}
}

并像这样使用它:

optionalIntegers.stream()
.flatMap(StreamUtil::fromOptional)
.forEach(integers::add);

关于java - 合并列表 <T> 和列表 <Optional<T>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38871059/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com