gpt4 book ai didi

java - 过滤按属性区分并按日期排序的列表的好方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:11:18 25 4
gpt4 key购买 nike

我有很简单的事情要做,我有这样的人名单:

[{
name: John,
date: 01-01-2018,
attend: true
},
{
name: Adam,
date: 01-01-2018,
attend: false
},
{
name: Adam,
date: 01-02-2018,
attend: true
},
{
name: JOHN,
date: 01-02-2018,
attend: false
}]

这个数组的结果应该是:Adam (true), John (false)

所以我需要返回用户的最新条目列表,在这种情况下,约翰首先确认他正在参加,然后他改变了主意并告诉他没有参加所以我要返回他的最后一个条目(注意有时写的是 JOHN,有时是 John,但这是同一个人,这是一个棘手的部分)

我的问题是什么是过滤掉这种列表的最佳方法,我正在考虑应用“按属性 java 流唯一”,但首先需要按日期降序和姓名(大写/小写)对人员进行排序,然后我需要以某种方式获取最新条目。

任何人都知道最好的方法是什么?

最佳答案

您可以使用 Collectors.toMap做同样的事情:

List<Person> finalList = new ArrayList<>(people.stream()
.collect(Collectors.toMap(a -> a.getName().toLowerCase(), // name in lowercase as the key of the map (uniqueness)
Function.identity(), // corresponding Person as value
(person, person2) -> person.getDate().isAfter(person2.getDate()) ? person : person2)) // merge in case of same name based on which date is after the other
.values()); // fetch the values

注意:以上假设最小的 Person 类是

class Person {
String name;
java.time.LocalDate date;
boolean attend;
// getters and setters
}

关于java - 过滤按属性区分并按日期排序的列表的好方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53636700/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com