aka*_*iza 2 java lambda grouping java-8
我有一个根据他们的年龄分组的人员列表(group1的年龄<20,group2的年龄> = 20),并根据姓名和年龄使用Java 8对每个组进行排序:人员列表:
第1组:
Ane 12
Col 14
Run Code Online (Sandbox Code Playgroud)
第2组:
James 24
thomas 34
Xavier 55
Run Code Online (Sandbox Code Playgroud)
我想用Java 8做这样的事情:
list.stream().collect(Collectors.groupingBy(...
Run Code Online (Sandbox Code Playgroud)
你可以通过以下方式获得你想要的东西:
请注意,将维护每个分区的顺序:
import static java.util.Comparator.comparing;
import static java.util.stream.Collectors.partitioningBy;
people.stream()
.sorted(
comparing(Person::getAge)
.thenComparing(Person::getName))
.collect(partitioningBy(p -> p.getAge() >= 20))
Run Code Online (Sandbox Code Playgroud)
感谢Christoffer提出的改进建议:斯堪的纳维亚Java必须像一套宜家装配说明一样光滑:)