我有一个学生对象列表。我想使用Java 8根据某些参数过滤此列表。我的代码就是这样
studentName = "test";
studentsList = students.stream().filter(s -> s.getName().equals(studentName )).collect(Collectors.toList());
但是,如果StudentName不为null,我想应用此过滤器。如果studentName为null,那么我不希望此过滤器起作用。我可以在过滤器中将此StudentName设为可选吗?
答案 0 :(得分:3)
分两个步骤进行操作:
SELECT t.*
FROM ( SELECT 'Mike' AS name, 'March' AS month
UNION SELECT 'John' AS name, 'April' AS month) AS aux
JOIN table t ON t.name = aux.name
AND t.month = aux.name
或将null检查添加到过滤器本身中:
Stream<Student> studentStream = students.stream();
if (studentName != null) {
studentStream = studentStream.filter(s -> s.getName().equals(studentName));
}
studentsList = studentStream.collect(Collectors.toList());