目前,我正在:
List<MyObj> nullableList = myObjs.stream().filter(m -> m.isFit()).collect(Collectors.toList());
if (nullableList.isEmpty()) {
nullableList = null;
}
有更好的方法吗?像Collectors.toListOrNullIfEmpty()之类的东西?
最佳答案
我实际上不确定您是否必须这样做。有时人们编写可怕的代码试图使其变得更简单。我会像在您的代码中一样,在流之后给此案例添加其他if
。但是您可以在c下找到所需的代码:
public class Demo {
public static void main(String[] args) {
List<Integer> list = Arrays.asList(1, 2, 3, 4);
List<Integer> nullableList = list.stream()
.filter(m -> m > 2)
.collect(Collectors.collectingAndThen(
Collectors.toList(), filtered -> filtered.isEmpty() ? null : filtered
));
System.out.println(nullableList);
}
}
关于java - 有没有一种很好的方法可以使用流过滤列表并获取项目列表,如果没有项目通过过滤器,则返回null?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59804080/