有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

如果给定值不为null,则java应用筛选器

我有一个学生物品清单。我想使用Java8根据一些参数筛选这个列表。我的代码是这样的

studentName = "test";

studentsList = students.stream().filter(s -> s.getName().equals(studentName )).collect(Collectors.toList());

但是如果studentName不为null,我想应用这个过滤器。如果studentName为null,则我不希望此筛选器工作。我可以在筛选器中将此studentName设置为可选吗


共 (1) 个答案

  1. # 1 楼答案

    或者分两步进行:

    Stream<Student> studentStream = students.stream();
    if (studentName != null) {
        studentStream = studentStream.filter(s -> s.getName().equals(studentName));
    }
    studentsList = studentStream.collect(Collectors.toList());
    

    或者将空检查添加到过滤器本身:

    studentsList = students.stream()
            .filter(s -> studentName == null || s.getName().equals(studentName))
            .collect(Collectors.toList());