java – Stream类型中的方法过滤器(Predicate <?super Emplo
发布时间:2020-12-15 08:28:55 所属栏目:Java 来源:网络整理
导读:如何在过滤器中设置 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");
|
如何在过滤器中设置
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());
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
