В Java8,java.util.Collection
Интерфейс предоставляет новый метод Collection.removeIf(), который используется для удаления элементов в коллекции на основе условий Его появление может заменить метод написания с использованием итератора для обхода и удаления до Java8.
Чтобы понять цель введения этого метода, давайте сначала посмотрим, как удалить элементы из коллекции в java7.
Перед этим создайте класс сущности:
public class Employee {
private String name;
private Integer age;
private Double salary;
public Employee(String name, Integer age, Double salary) {
this.name = name;
this.age = age;
this.salary = salary;
}
@Override
public String toString(){
return "Employee Name:"+this.name
+" Age:"+this.age
+" Salary:"+this.salary;
}
//...省略get、set等方法
}
Способ обхода удаления в Java7:
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class CollectionRemoveIfExample {
private static List<Employee> employeeList = new ArrayList<>();
public static void main(String[] args) {
employeeList.add(new Employee("关羽", 45, 7000.00));
employeeList.add(new Employee("张飞", 25, 10000.00));
employeeList.add(new Employee("赵云", 65, 8000.00));
employeeList.add(new Employee("吕布", 22, 12000.00));
employeeList.add(new Employee("马超", 29, 9000.00));
Iterator<Employee> empIterator = employeeList.iterator();
while(empIterator.hasNext()){
Employee employee = empIterator.next();
if(employee.getAge() >= 30){
empIterator.remove();
}
}
System.out.println("年龄小于30岁的员工:");
employeeList.forEach(System.out::println);
}
}
результат операции:
Если вы пишете код в IDEA, IDEA автоматически предложит вам использовать метод Collection.removeIf для перехода и удаления здесь.
Ява 8java.util.Collection
Интерфейс добавляет новый метод по умолчаниюremoveIf()
. Сигнатура метода
default boolean removeIf(Predicate<? super E> filter)
Используйте метод Collection.removeIf в Java8
import java.util.ArrayList;
import java.util.List;
public class CollectionRemoveIfExample {
private static List<Employee> employeeList = new ArrayList<>();
public static void main(String[] args) {
employeeList.add(new Employee("关羽", 45, 7000.00));
employeeList.add(new Employee("张飞", 25, 10000.00));
employeeList.add(new Employee("赵云", 65, 8000.00));
employeeList.add(new Employee("吕布", 22, 12000.00));
employeeList.add(new Employee("马超", 29, 9000.00));
employeeList.removeIf((Employee emp) -> emp.getAge() >= 30);
System.out.println("年龄小于30岁的员工:");
employeeList.forEach(System.out::println);
}
}
Результат выполнения точно такой же, как результат выполнения в Java7.