📅  最后修改于: 2023-12-03 15:31:28.245000             🧑  作者: Mango
在Java 8 中,我们可以使用列表流和Lambda表达式来对列表进行操作。在这篇文章中,我们将介绍如何使用Java 8列表流按名称删除元素。
创建一个名为Person
的类,此类拥有String
类型的name
属性和int
类型的age
属性。并创建一个包含Person
对象的列表:
public class Person {
private String name;
private int age;
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public int getAge() {
return age;
}
}
List<Person> personList = Arrays.asList(
new Person("Alice", 23),
new Person("Bob", 26),
new Person("Charlie", 27),
new Person("David", 22)
);
现在我们将使用Java 8的列表流按名称删除元素。
首先,我们需要创建一个谓词(Predicate),它用于测试对象是否满足某个条件。在这个例子中,我们将创建一个谓词来测试Person
对象是否具有指定名称:
Predicate<Person> byName = person -> person.getName().equals("Bob");
然后,我们可以使用filter()
方法过滤掉所有名称为Bob
的Person
对象:
List<Person> filteredList = personList.stream()
.filter(byName.negate())
.collect(Collectors.toList());
最后,我们可以将过滤后的列表赋值回原列表:
personList = filteredList;
public class Main {
public static void main(String[] args) {
List<Person> personList = Arrays.asList(
new Person("Alice", 23),
new Person("Bob", 26),
new Person("Charlie", 27),
new Person("David", 22)
);
Predicate<Person> byName = person -> person.getName().equals("Bob");
List<Person> filteredList = personList.stream()
.filter(byName.negate())
.collect(Collectors.toList());
personList = filteredList;
System.out.println("Original List:");
personList.forEach(person -> System.out.println(person.getName() + ": " + person.getAge()));
System.out.println("\nFiltered List:");
filteredList.forEach(person -> System.out.println(person.getName() + ": " + person.getAge()));
}
}
输出:
Original List:
Alice: 23
Charlie: 27
David: 22
Filtered List:
Alice: 23
Charlie: 27
David: 22
以上就是Java 8列表流按名称删除的介绍及示例代码。