按分组排序列表

20 浏览
0 Comments

按分组排序列表

我在想,流(或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

0