我有一个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 次 |
最近记录: |