gpt4 book ai didi

java - Stream 分组后不保留顺序

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:48:29 26 4
gpt4 key购买 nike

我有一个列表名称 availableSeats 我正在按 blockIndex 属性进行排序和分组,如下所示:

availableSeats.stream()
.sorted(Comparator.comparing(SeatedTicketAssignment::getBlockIndex))
.collect(Collectors.groupingBy(SeatedTicketAssignment::getBlockIndex))
.forEach((block, blockAssignments) -> {
//Rest of the code
}

问题是分组依据的结果没有按照blockIndex排序。

最佳答案

请记住,Collectors#groupingBy(Function)将返回 HashMap ,这不保证顺序。如果您希望按照聚合身份(您的 i % 2 == 0 结果)显示的顺序进行排序,那么您可以使用 LinkedHashMap :

.collect(Collectors.groupingBy(i -> i % 2 == 0, LinkedHashMap::new, Collectors.toList()))

将返回 LinkedHashMap<Boolean, List<SeatedTicketAssignment>> (因为您的收集器按 boolean 值分组)。此外,由于收集器使用的列表是 ArrayList ,它应该保留流的迭代顺序相对于列表

关于java - Stream 分组后不保留顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45557290/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com