仅从java对象列表中筛选所需的重复记录(版本小于8)
我必须从对象列表中筛选重复项,这很容易。但是,在过滤重复项时,我有一个内部条件。这是我的密码
List<Person> personsList = Arrays.asList(
new Person(ID: 1234, dateOfJoin: new Date("2020-08-31 17:32:46"), status: 'Accepted'),
new Person(ID: 1234, dateOfJoin: new Date("2020-08-31 17:30:49"), status: 'Rejected'),
new Person(ID: 3456, dateOfJoin: new Date("2020-08-29 13:23:34"), status: 'Waiting'));
我必须过滤ID相等的PersonList,并且我必须获得最近的dateOfJoin个人。因此,我的最终筛选列表如下所示
List<Person> filteredPersonsList = Arrays.asList(
new Person(ID: 1234, dateOfJoin: new Date("2020-08-31 17:30:49"), status: 'Rejected'),
new Person(ID: 3456, dateOfJoin: new Date("2020-08-29 13:23:34"), status: 'Waiting'));
我怎样才能过滤这个?有什么建议吗
谢谢
# 1 楼答案
假设有相应的getter看起来像这样
不幸的是,
maxBy
返回Optional
,需要进一步展开# 2 楼答案
可以使用
toMap
和maxBy
获得具有相同id的maxdateOfJoin
,并在ArrayList中获取映射的值