当前位置:   article > 正文

java 对象集合过滤通过某个属性的值是否包含在定义的一个数组里面

java 对象集合过滤通过某个属性的值是否包含在定义的一个数组里面

在Java中,如果你想要从一个对象集合中过滤出那些具有某个属性值在预定义数组内的元素,你可以使用Java 8的Stream API结合filter方法来完成这一需求。下面是一个示例,基于之前的Person类和一个状态数组,展示如何过滤出状态在指定数组内的所有人员。

示例代码

import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) {
        List<Person> people = Arrays.asList(
            new Person("Alice", "active"),
            new Person("Bob", "inactive"),
            new Person("Charlie", "pending"),
            new Person("David", "active")
        );

        String[] statusesToFilter = {"active", "pending"};

        List<Person> filteredPeople = people.stream()
            .filter(person -> Arrays.asList(statusesToFilter).contains(person.getStatus()))
            .collect(Collectors.toList());

        System.out.println("过滤后的人员列表:");
        filteredPeople.forEach(person -> System.out.println(person.getName() + " - " + person.getStatus()));
    }
}

class Person {
    private String name;
    private String status;

    public Person(String name, String status) {
        this.name = name;
        this.status = status;
    }

    public String getStatus() {
        return status;
    }

    public String getName() {
        return name;
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42

在这个例子中,我们使用filter方法对people集合进行过滤。Lambda表达式person -> Arrays.asList(statusesToFilter).contains(person.getStatus())用于检查每个Person对象的status属性是否包含在statusesToFilter数组所转换的列表中。如果包含,则保留该对象。最后,使用collect(Collectors.toList())将过滤后的流转换回List<Person>

运行这段代码,你将得到一个只包含状态为"active"和"pending"的人员的新列表。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/615242
推荐阅读
相关标签
  

闽ICP备14008679号