【发布时间】:2020-12-29 18:10:57
【问题描述】:
我有一个如下的过程对象列表
Procedure1 01/01/2020
Procedure2 03/01/2020
Procedure3 03/01/2020
Procedure1 04/01/2020
Procedure5 05/01/2020, 02/01/2020
Procedure2 06/01/2020
我的程序类就像
Class Procedure {
List<Date> procedureDate;
String procedureName;
}
我想根据以下条件对对象进行排序和分组。
- 应根据过程名称对所有过程进行分组。
- 程序必须按程序日期的降序排列。 [日期列表中的第一个元素,即
procedureDate.get[0]] - 组合在一起的相同程序应按日期的降序排列。
最终结果必须是,
Procedure2 06/01/2020
Procedure2 03/01/2020
Procedure5 05/01/2020, 02/01/2020
Procedure1 04/01/2020
Procedure1 01/01/2020
Procedure3 03/01/2020
我能够使用 Comparator 和旧的 java 代码来实现这一点。是否可以使用 java8 流、收集器和分组依据来实现相同的目标?
【问题讨论】:
-
请发布您的“旧”代码,这样我们就不必完全依赖猜测,它还可以通过展示您所做的事情来改善您的问题,而不仅仅是为了某人为你编写所有代码
-
为什么是 Procedure5 05/01/2020, 02/01/2020 而不是 Procedure5 05/01/2020 Procedure5 02/01/2020
-
@ ΦXocę 웃 Пepeúpa ツ 基本上这个列表来自包含句子的文档。如果句子是“Some Procedure5 occurred on 05/01/2020 and 02/01/2020”,则将有 2 个日期与 Procedure5 相关联。如果句子是“Procendure5 发生在 05/01/2020……几天后,Procendure5 发生在 02/01/2020”,它将是 Procendure5 - 05/01/2020 和 Procedure5 -02/01/ 2020 年(根据业务要求)
-
你可以使用分组功能,然后对结果进行排序,这样就很容易了
标签: java java-8 java-stream collectors groupingby