目前,我正在:

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/

10-10 09:48