如何使用 java 流过滤自定义对象列表? [复制]

Posted

技术标签:

【中文标题】如何使用 java 流过滤自定义对象列表? [复制]【英文标题】:How to filter a custom object list using java stream? [duplicate] 【发布时间】:2020-06-08 02:51:25 【问题描述】:

我有以下对象:

class Person 
    private String firstName;
    private String lastName;
    private int age;

    public Person(String firstName, String lastName, int age) 
        this.firstName = firstName;
        this.lastName  = lastName;
        this.age       = age;
    

    public String getFirstName() 
        return firstName;
    

    public String getLastName() 
        return lastName;
    

    public int getAge() 
        return age;
    


我得到了ListPerson

例如

    名字:大卫,姓氏:霍恩,年龄:23​​ 名字:Aaron,姓氏:Tomas,年龄:21 名字:约翰,姓氏:库克,年龄:18 名字:James,姓氏:Polly,年龄:34 名字:Holly,姓氏:Lucas,年龄:15 名字:Maria,姓氏:Miles,年龄:28

我想过滤所有年龄21或以上的人。

意思是,得到一个新的List 和年龄为>= 21Person

如何使用 Java stream() 做到这一点?

【问题讨论】:

在 SO 中没有找到任何内容时,可以发布您遇到问题并自行回答的问题。对于面临相同问题的其他开发人员可能会有所帮助。但是在这种情况下......这个主题必须有一千个帖子 这看起来像是一些学习任务。还请发布您尝试过的内容。你在哪里卡住?现在您只发布了作业详情。 【参考方案1】:

如果你有List<Person>并且你想要一个21及以上的List<Person>,你可以编写如下方法:

public List<Person> filterPersonAbove21(List<Person> personList) 
    return personList.stream()
                     .filter(person -> person.getAge() >= 21)
                     .collect(Collectors.toList());

filterPersonAbove21 方法的返回值包含一个 ListPerson 对象,它们的年龄为 21 岁及以上。

例如关于最后一个例子:

    名字:大卫,姓氏:霍恩,年龄:23​​ 名字:Aaron,姓氏:Tomas,年龄:21 名字:James,姓氏:Polly,年龄:34 名字:Maria,姓氏:Miles,年龄:28

【讨论】:

不应该是person -&gt; person.getAge() &gt;= 21 吗? 你是对的。 :)

以上是关于如何使用 java 流过滤自定义对象列表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

具有任何匹配属性的对象的 JAVA 8 过滤器列表

如何在不指向 Java 源列表中的对象的情况下复制 ArrayList? [复制]

Java - 如何反序列化带有嵌套对象和列表的 JSON 数组? [复制]

如何从具有多个值和预定义类别的列表中创建虚拟对象? [复制]

如何在java中创建树型对象? [复制]

如何在 Java 中创建列表列表并添加任何类型的列表? [复制]