Java8为Collection集合新增了一个removeIf(Predicate filter)方法,该方法将会批量删除符合filter条件的所有元素。
public class Student {
String name;
int score;
public Student(String name, int score) {
this.name = name;
this.score = score;
}
@Override
public String toString() {
return "Student{" +
"name='" + name + '\'' +
", score=" + score +
'}';
}
}
public static void main(String args[]) throws Exception {
Student student1 = new Student("张三", 55);
Student student2 = new Student("李四", 75);
Student student3 = new Student("王五", 85);
Student student4 = new Student("王六", 95);
Student student5 = new Student("王七", 35);
List<Student> students = new ArrayList<>();
students.add(student1);
students.add(student2);
students.add(student3);
students.add(student4);
students.add(student5);
//输出: [Student{name='张三', score=55}, Student{name='李四', score=75}, Student{name='王五', score=85}, Student{name='王六', score=95}, Student{name='王七', score=35}]
System.out.println(students);
//移除姓王的同学
students.removeIf(new Predicate<Student>() {
@Override
public boolean test(Student student) {
return student.name.startsWith("王");
}
});
//可以简写成
//students.removeIf(student -> student.name.startsWith("王"));
//输出: [Student{name='张三', score=55}, Student{name='李四', score=75}]
System.out.println(students);
//移除不及格的同学
students.removeIf(new Predicate<Student>() {
@Override
public boolean test(Student student) {
return student.score < 60;
}
});
//可以简写成
//students.removeIf(student -> student.score < 60);
//输出: [Student{name='李四', score=75}, Student{name='王五', score=85}, Student{name='王六', score=95}]
System.out.println(students);
}