📜  java 8 列表流按名称删除 - Java (1)

📅  最后修改于: 2023-12-03 15:31:28.245000             🧑  作者: Mango

Java 8 列表流按名称删除

在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()方法过滤掉所有名称为BobPerson对象:

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列表流按名称删除的介绍及示例代码。