【问题标题】:How to filter a custom object list using java stream? [duplicate]如何使用 java 流过滤自定义对象列表? [复制]
【发布时间】: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

例如

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

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

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

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

【问题讨论】:

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

标签: java filter java-stream


【解决方案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 岁及以上。

例如关于最后一个例子:

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

【讨论】:

  • 不应该是person -&gt; person.getAge() &gt;= 21 吗?
  • 你是对的。 :)
猜你喜欢
  • 2021-09-14
  • 1970-01-01
  • 1970-01-01
  • 2013-07-02
  • 1970-01-01
  • 1970-01-01
  • 2021-12-20
  • 2016-04-23
  • 1970-01-01
相关资源
最近更新 更多