compareTo()如何比较每次迭代中的值?
我知道 compareTo() 是如何工作的(即 0,+1,-1)。下面的代码有效但我想知道它是如何比较对象的,它比较三个对象的顺序。
注意:搜索了以前的问题,但没有找到任何答案。
插入列表的值是[a,c,b,d]
任何人都可以请解释一下它采用上述输入进行比较的顺序。
当我调试时,我看到下面的行值组合 this.name.compareTo(employeeName.name);
| 这个.name | 员工姓名.name |
|---|---|
| C | 一种 |
| 乙 | C |
| b(值再次重复) | c(值再次重复) |
| 乙 | 一种 |
| d | 乙 |
| d | C |
回答
比较的顺序取决于所使用的排序算法,这取决于您使用的 Java 版本。例如,在 Java 11 中,排序算法默认为TimSort,这是一种从更知名的归并排序和插入排序算法派生的排序算法。
- [Java 6](https://docs.oracle.com/javase/6/docs/api/java/util/Collections.html#sort(java.util.List)) says mergesort, [Java 7](https://docs.oracle.com/javase/7/docs/api/java/util/Collections.html#sort(java.util.List)) says timsort. In later versions, they removed all mention of the implementation. Rightfully so; it shouldn't really matter.