Reb*_*cca 2 java java-8 java-stream
这是我的代码,但我发现它不好。在JDK8中我可以只使用一个流表达式来获得两个条件的结果吗?我想确保id条件是第一个,名称条件是第二个。
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;
}
}
Run Code Online (Sandbox Code Playgroud)
流不应该被过度使用,有时返回循环是有意义的。在你的情况下foreach会更简单更好。类似于(伪代码):
Student res;
for (Student s : students) {
if s.id == id -> { res = s; break; }
if s.name == name -> res = s;
}
Run Code Online (Sandbox Code Playgroud)