如何在 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());
关于java - Stream<Employee> 类型中的方法 filter(Predicate<? super Employee>) 不适用于参数 ((<no type> e) -> {}),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55015781/