如何在过滤器中设置
Java 8中的值?我想将emailId设置为null,其中firstName是Raj.我怎么能在Java8中做到这一点?
public class EmployeeDemo { public static void main(String[] args) { Employee e1 = new Employee("John","Kerr","john.kerr@gmail.com"); Employee e2 = new Employee("Parag","Rane","john.kerr@gmail.com"); Employee e3 = new Employee("Raj","Kumar","john.kerr@gmail.com"); Employee e4 = new Employee("Nancy","Parate","john.kerr@gmail.com"); List<Employee> employees = new ArrayList<>(); employees.add(e1); employees.add(e2); employees.add(e3); employees.add(e4); employees.stream().filter(e -> { if(e.getFirstName().equals("Raj")) { e.setEmail(null); } }). } }
解决方法
Filter方法应该返回boolean,我认为不应该有任何副作用.在你的情况下,简单的循环将完成工作:
for(Employee employee: employees) { if(e.getFirstName().equals("Raj")) { e.setEmail(null); } }
但如果你真的想使用流:
employees.stream() //get stream .filter(e -> e.getFirstName().equals("Raj")) //filter entries with first name Raj .forEach(e -> e.setEmail(null)); //for each of them set email to null
或者(如果你想处理整个列表并且返回的所有条目都改变了:
employees.stream() //get stream .map(e -> { if(e.getFirstName().equals("Raj")) { e.setEmail(null); } return e; }) .collect(Collectors.toList());