如何使用 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;
我得到了List
的Person
例如
-
名字:大卫,姓氏:霍恩,年龄:23
名字:Aaron,姓氏:Tomas,年龄:21
名字:约翰,姓氏:库克,年龄:18
名字:James,姓氏:Polly,年龄:34
名字:Holly,姓氏:Lucas,年龄:15
名字:Maria,姓氏:Miles,年龄:28
我想过滤所有年龄为21或以上的人。
意思是,得到一个新的List
和年龄为>= 21
的Person
。
如何使用 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
方法的返回值包含一个 List
的 Person
对象,它们的年龄为 21 岁及以上。
例如关于最后一个例子:
-
名字:大卫,姓氏:霍恩,年龄:23
名字:Aaron,姓氏:Tomas,年龄:21
名字:James,姓氏:Polly,年龄:34
名字:Maria,姓氏:Miles,年龄:28
【讨论】:
不应该是person -> person.getAge() >= 21
吗?
你是对的。 :)以上是关于如何使用 java 流过滤自定义对象列表? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何在不指向 Java 源列表中的对象的情况下复制 ArrayList? [复制]
Java - 如何反序列化带有嵌套对象和列表的 JSON 数组? [复制]