java - 使用比较器对列表进行排序未按预期工作
问题描述
返回时List<Person>
,我想根据 ActiveStatus 中提到的时间按降序对列表进行排序。
我尝试了以下逻辑
class Business{
List<Person> getActivePersonListInDesc(){
....
List<Person> personList = ..;
Collections.sort(personList, Comparator.reverseOrder()); //not working as expected
return personList;
}
人物类:
class Person{
String personName;
List<ActiveStatus> status;
}
活动状态类:
class ActiveStatus{
LocalDateTime time;
}
解决方案
假设每个用户在 中至少有一个元素status
,该列表已经排序,最新的元素排在最后,并且您想按此排序,您可以使用以下内容:
Collections.sort(personList,
Comparator.comparing(person -> person.status.get(person.status.size() - 1).time)
.reverseOrder());
推荐阅读
- spring-boot - rabbitMQ 创建两个独立的消费者,他们从同一服务中的两个不同集群消费
- javascript - 用百吉反应传单标记导致循环
- javascript - 重力形式 - WordPress
- deep-learning - 即使在减少批量大小后,Cuda 内存不足错误
- mysql - 如何优化 Join 查询?
- python - Numpy 错误“ValueError:找到昏暗 3 的数组。预计估计器 <= 2。”
- vb.net - DataTable to list in VB.Net
- angular - 在 ngx-charts 热图上显示值
- java - 有没有办法在groovy的字符串中自动设置windows路径?
- arrays - 根据条件从 Scala 数组中获取结果