Storing some value in variable while using lambda expression
java, java-8, lambda
Solution
Introduce a variable after filtering null students
studentsOfThisDept = students.stream()
.filter(s -> s != null)
.filter(s -> {
Dept dept = s.getDepartment();
return dept != null && dept.getCode().equals("CS");
})
.collect(Collectors.toList());
`filter()` takes a predicate, which means the lambda block can do things like declare variables, log stuff etc. Just make sure to return a boolean at the end of the block. A predicate is a function that takes an object and returns boolean.
Problem
I am working with `java-8`. Please see the following code snippet - ``` studentsOfThisDept = students.stream() .filter(s -> (student != null && s.getDepartment() != null && s.getDepartment().getCode().equals("CS") )) .collect(Collectors.toList()); ``` Here I have to perform 2 check - ``` s.getDepartment() != null ; // 1st check ``` and ``` s.getDepartment().getCode().equals("CS") // 2nd check ``` Is there any way that I can store the value of `s.getDepartment()` to some variable (say `dept`) so that in second check I can write - ``` dept.getCode().equals("CS"); ```