我有一个人员列表,我想根据他们的年龄对其进行分组(group1 的年龄 < 20,group2 的年龄 >=20),并使用 Java 8 根据姓名和年龄对每个组进行排序: 人员名单:
第 1 组:
Ane 12
Col 14
第 2 组:
James 24
thomas 34
Xavier 55
我想使用 Java 8 来做这样的事情:
list.stream().collect(Collectors.groupingBy(...
最佳答案
您可以通过以下方式获得您想要的内容:
- 按年龄(然后是姓名)对所有人员进行排序。
- 对其进行分区。
请注意,每个分区的顺序将保持不变:
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))
感谢 Christoffer 的改进建议:斯堪的纳维亚 Java 必须像一套 IKEA 组装说明一样流畅:)
关于java - 使用 Java 8 流对集合进行分组和排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40577012/