按分组排序列表
- 论坛
- 按分组排序列表
20 浏览
按分组排序列表
我在想,流(或Collectors)中是否已经实现了一个特性,可以将排序的列表作为值。例如,以下代码都生成按年龄排序的人员的性别分组列表。第一种解决方案在排序时有一些开销(看起来有点凌乱)。第二种解决方案需要两次查看每个人,但以一种漂亮的方式完成任务。
先排序,然后在一个流中进行分组:
Map> sortedListsByGender = (List ) roster .stream() .sorted(Person::compareByAge) .collect(Collectors.groupingBy(Person::getGender));
先分组,然后对每个值进行排序:
Map> sortedListsByGender = (List ) roster .stream() .collect(Collectors.groupingBy(Person::getGender)); sortedListsByGender.values() .forEach(list -> Collections.sort(list, Person::compareByAge));
我只是在想,是否已经有一种实现,可以在一次运行中完成这个任务,类似于groupingBySorted
。