gpt4 book ai didi

java流空检查

转载 作者:行者123 更新时间:2023-12-01 18:36:35 25 4
gpt4 key购买 nike

如何更好地检查流内的空值

List<Employee> employees1= employees.stream().filter(
employee -> students.stream()
.anyMatch(student ->
// checking null
employee!=null && student!=null &&
employee.getId()!=null && student.getName()!=null &&
employee.getId()==student.getId() &&
employee.getName().equals(student.getName()))
)
.collect(Collectors.toList());

最佳答案

我很好奇您的代码在执行期间是否抛出 NullPointerException。您正在流式传输 employees 集合,然后在 Employee 对象中流式传输 students 集合。

如果您的父对象 Employee 是 null 值,那么您不可能在该对象上拥有 student 集合,如内部流中所示。

考虑引入:

.map(employee -> Optional.ofNullable(employee) 
.filter(Optional::isPresent)
.map(Optional::get)

在过滤器之前。这将消除任何空父对象。

对于您的内部流,您似乎仍然担心您的 student 元素将为 null,因此请在 .anyMatch 调用之前重复这些行。

为了便于阅读,我会考虑将空检查提取到更小的方法中,以描述正在执行的检查。例如,您有以下行:

employee.getName().equals(student.getName()

这表明您正在寻找员工和学生姓名匹配的学生元素。 employeeAndStudentNamesMatch(employee, Student) 在这里就足够了。

要检查 null 值,您确实应该使用Optional API。这使您可以选择将可能为空的内容包装在安全包装器中,以检查那里是否有值。从内部流中提取一个示例,在其中检查学生姓名是否存在,您可以将其替换为:

Optional.ofNullable(student.getName()).isPresent();

这就是我真正能提供的所有建议。希望它能帮助你进步。

关于java流空检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60025638/

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