这是我的代码,但我发现它并不好。我可以只使用一个流表达式来获得 JDK8 中有两个条件的结果吗?我想确保 id 条件是第一个,name 条件是第二个。
public Student getStudent(String id,String name) {
try {
List<Student> students = studentDao.getStudent();
if (CollectionUtils.isNotEmpty(students)) {
Student studentDomain=students.stream()
.filter(p -> id .equals(p.getId()))
.findAny().orElse(null);
if(studentDomain==null){
studentDomain=students.stream()
.filter(p -> name.equals(p.getName()))
.findAny()
.orElse(null);
}
return studentDomain;
} else {
return null;
}
}catch (Exception ex){
return null;
}
}
最佳答案
不应该过度使用流,有时回到循环是有意义的。
在你的情况下 foreach
会更简单更好。类似于(伪代码):
Student res;
for (Student s : students) {
if s.id == id -> { res = s; break; }
if s.name == name -> res = s;
}
关于java - 在JDK8中,我可以只使用一个流表达式来获得两个条件的结果吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73231815/