相关疑难解决方法(0)

在分组后排序列表

我想知道,如果流(或收集器)中已经有一个已实现的功能,它已将列表排序为值.例如,以下代码均生成按年龄分类的按性别分组的人员列表.第一个解决方案有一些开销排序(看起来有点邋)).第二个解决方案需要两次看每个人,但是以一种漂亮的方式完成工作.

首先排序然后在一个流中分组:

Map<Gender, List<Person>> sortedListsByGender = (List<Person>) roster
        .stream()
        .sorted(Person::compareByAge)
        .collect(Collectors.groupingBy(Person::getGender));
Run Code Online (Sandbox Code Playgroud)

首先分组,然后对每个值进行排序:

Map<Gender, List<Person>> sortedListsByGender = (List<Person>) roster
        .stream()
        .collect(Collectors.groupingBy(Person::getGender));
sortedListsByGender.values()
        .forEach(list -> Collections.sort(list, Person::compareByAge));
Run Code Online (Sandbox Code Playgroud)

我只是想知道,如果已经有一些实现的东西,它会在一次运行中完成,例如groupingBySorted.

java java-stream

23
推荐指数
1
解决办法
2万
查看次数

标签 统计

java ×1

java-stream ×1