gpt4 book ai didi

java - partitioningBy 是否保留原始列表中元素的顺序?

转载 作者:行者123 更新时间:2023-11-29 04:24:49 25 4
gpt4 key购买 nike

我已经订购了 LocalDateTime 列表,我需要在特定日期的午夜将其拆分。不应更改两个新列表中元素的顺序。

List<LocalDateTime> l = Arrays.asList(LocalDateTime.of(2017,10,24,7,0,0),LocalDateTime.of(2017,10,24,8,0,0),LocalDateTime.of(2017,10,25,7,0,0),LocalDateTime.of(2017,10,25,9,0,0));

Collectors.partitioningBy 是否保证顺序将被保留?

l.stream().collect(Collectors.partitioningBy(t-> t.isAfter(LocalDateTime.of(2017,10,25,0,0,0))))

输出:

{false=[2017-10-24T07:00, 2017-10-24T08:00], true=[2017-10-25T07:00, 2017-10-25T09:00]}

最佳答案

documentation of the built-in collectors明确提及何时 Collector无序 收集器,例如对于toSet()groupingByConcurrent(…) .所有未指定为无序的收集器将保留遇到顺序,如果流是有序的并且它们没有本身无序的下游收集器。

partitioningBy(predicate) 等同于 partitioningBy(predicate, toList()) 因此,将保持相遇顺序。

一个反例是 partitioningBy(predicate, toSet()),它不保留任何顺序,同样,流本身也是无序的,例如hashSet.stream() .collect(partitioningBy(predicate)),不对结果顺序做任何保证。

关于java - partitioningBy 是否保留原始列表中元素的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46933570/

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