需要从
示例:
List<Optional<String>>
中移除所有的空值/ null 值。示例:
List<Optional<String>> list = new ArrayList<>();
list.add(Optional.empty());
list.add(Optional.of("Str1"));
list.add(Optional.of("Str2"));
list.add(Optional.of("Str3"));
list.add(Optional.of("Str4"));
list.add(Optional.of("Str5"));
list.add(Optional.empty());
list.add(Optional.ofNullable(null));
目前,我正在使用以下方法之一:
方法1:
List<String> collect = list.stream()
.filter(Optional::isPresent)
.map(obj ->obj.get())
.collect(Collectors.toList());
方式二:
List<Optional<String>> emptlist = new ArrayList<>();
emptlist.add(Optional.empty());
list.removeAll(emptlist);
还有其他更好的方法吗?
Collection.removeIf
。可以像这样简单地写:list.removeIf(o -> !o.isPresent());
。 - AxelHList<Optional<String>>
中删除所有空/ null值”,然后在评论中又说“需要过滤后的列表的单独副本”。那么这是什么意思?请提供一个[mcve],解释你的期望。 - AxelH