我有一个List名称availableSeats我正在通过blockIndex属性进行排序和分组,如下所示:
availableSeats.stream()
.sorted(Comparator.comparing(SeatedTicketAssignment::getBlockIndex))
.collect(Collectors.groupingBy(SeatedTicketAssignment::getBlockIndex))
.forEach((block, blockAssignments) -> {
//Rest of the code
}
Run Code Online (Sandbox Code Playgroud)
问题是分组的结果不是由blockIndex排序的.
Rog*_*gue 16
请记住,Collectors#groupingBy(Function)将返回一个HashMap,这不保证订单.如果您希望订购符合聚合身份(您的i % 2 == 0结果)显示的顺序,那么您可以使用LinkedHashMap:
.collect(Collectors.groupingBy(i -> i % 2 == 0, LinkedHashMap::new, Collectors.toList()))
Run Code Online (Sandbox Code Playgroud)
将返回a LinkedHashMap<Boolean, List<SeatedTicketAssignment>>(因为您的收集器按布尔值分组).另外,由于收集器使用的列表是a ArrayList,它应该保留流相对于列表的迭代顺序.
| 归档时间: |
|
| 查看次数: |
3539 次 |
| 最近记录: |