- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个名为 Instance 的对象,它有 2 个字段,一个特征数组(这是另一个对象),代表数据集中的列,例如年龄、性别、类别等;以及它们的值(即一个数字)。我还实现了一个自定义比较器,它可以根据实例的特定功能对这些对象的列表进行排序,如下所示:
Comparator<Instance> comparator = Comparator.comparing(c -> c.get(feature));
Instance[] sorted = instList.stream().sorted(comparator).toArray(Instance[]::new);
现在,这段代码工作正常,但是,在很多情况下,我排序所依据的特征与另一个实例具有相同的值。在这种情况下,Java如何决定如何继续对列表进行排序?
最佳答案
从 Java API 中引用 Stream.sorted()
:
For ordered streams, the sort is stable. For unordered streams, no stability guarantees are made.
List
上的流是 ordered , 这意味着 stable使用排序算法。稳定排序保证相等的元素不会被交换。比较相等的元素以与起始列表中相同的相对顺序保留。
标准库中的所有排序方法都有类似的保证:
This sort is guaranteed to be stable: equal elements will not be reordered as a result of the sort.
...
The documentation for the methods contained in this class includes briefs description of the implementations. Such descriptions should be regarded as implementation notes, rather than parts of the specification. Implementors should feel free to substitute other algorithms, so long as the specification itself is adhered to. (For example, the algorithm used by
sort(Object[])
does not have to be a MergeSort, but it does have to be stable.)
Implementation Note:
This implementation is a stable, adaptive, iterative mergesort...
关于java - 当用于比较对象的所选字段相等时,Java 如何决定对具有多个字段的对象列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65263483/
我正在尝试用 Swift 编写这段 JavaScript 代码:k_combinations 到目前为止,我在 Swift 中有这个: import Foundation import Cocoa e
我是一名优秀的程序员,十分优秀!