【发布时间】:2021-03-08 18:01:20
【问题描述】:
我有一个对象列表,其中一些对象共享相似的 ID,但其余属性不同。我知道如何按相似的 ID 对它们进行分组...
...
.stream()
.collect(groupingBy(obj -> obj.id, mapping(obj -> obj, toList())));
但是我想添加一个额外的逻辑层。我希望Map 中的每个List 按两个条件排序。
第一个条件,我想使用contains 检查obj.specialId 是否存在于单独的Set 中。如果不是,那很好,但如果是,那么我希望该对象在Set 中排在第一位。类似specialSet.contains(obj.specialId)。
第二个条件是我想让它们按日期排序。这些对象有一个名为日期的属性obj.date。
条件并不重要,我最困惑的是如何保持Map 中值的顺序。一旦我知道该怎么做,添加我想要的条件应该很容易。
【问题讨论】:
标签: java java-stream grouping