gpt4 book ai didi

java - 为什么排序操作将遇到顺序强加给流?

转载 作者:行者123 更新时间:2023-12-04 19:25:17 25 4
gpt4 key购买 nike

sorted operation 的文档说:

For ordered streams, the sort is stable. For unordered streams, no stability guarantees are made.



page-summary说:

Some intermediate operations, such as sorted(), may impose an encounter order



有人可以解释为什么 sorted操作需要流的遇到顺序(我没有看到遇到顺序的存在与排序操作之间的关系)?

这是否意味着以下代码无效(因为 HashSet 不是本质上有序的)?
Set<Integer> mySet = new HashSet<>();
mySet.add(10);
mySet.add(4);
mySet.add(20);
mySet.add(15);
mySet.add(22);
mySet.add(-3);

List<Integer> result = mySet.stream().sorted().collect(Collectors.toList());

System.out.println(result);

当我运行这段代码时,它总是给我相同的输出 [-3, 4, 10, 15, 20, 22]
事件如果我使用 .parrallel() ,输出保持不变 [-3, 4, 10, 15, 20, 22]
mySet.stream().parallel().sorted().collect(Collectors.toList());`

最佳答案

When I run this code, it always give me the same output



是的。它按预期对集合进行排序。看来你误解了“稳定”这个词。排序中的稳定性是指不移动相等的元素。

Stable sort algorithms sort repeated elements in the same order that they appear in the input



Read more on Wikipedia

您的列表没有重复元素,因此稳定性不适用,您无法通过观察输出来确定稳定性。

Can someone explain why sorted operation needs an encounter order to the Stream



它没有。引用说它可能“强加遭遇命令”。也就是说,在 sort之后会有一个定义好的遭遇顺序。操作,而不是之前需要一个。

关于java - 为什么排序操作将遇到顺序强加给流?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59164362/

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