我知道 compareTo() 是如何工作的(即 0,+1,-1)。下面的代码有效但我想知道它是如何比较对象的,它比较三个对象的顺序。
注意:搜索了以前的问题,但没有找到任何答案。
插入列表的值是[a,c,b,d]
任何人都可以请解释一下它采用上述输入进行比较的顺序。
当我调试时,我看到下面的行值组合 this.name.compareTo(employeeName.name);
| 这个.name | 员工姓名.name |
|---|---|
| C | 一种 |
| 乙 | C |
| b(值再次重复) | c(值再次重复) |
| 乙 | 一种 |
| d | 乙 |
| d | C |
package packageOne;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
public class W {
public static void main(String[] args) {
Employee employee1 = new Employee("a");
Employee employee2 = new Employee("c");
Employee employee3 = new Employee("b");
Employee employee4 = new Employee("d");
List<Employee> al = new ArrayList<>();
al.add(employee1);
al.add(employee2);
al.add(employee3);
al.add(employee4);
Collections.sort(al);
System.out.println("after sorting");
System.out.println(al);
}
}
Run Code Online (Sandbox Code Playgroud)
雇员.java
package packageOne;
public class Employee implements Comparable<Employee> {
public String name;
Employee(String nameEmp) {
name = nameEmp;
}
@Override
public String toString() {
return name;
}
@Override
public int compareTo(Employee employeeName) {
return this.name.compareTo(employeeName.name);
}
}
Run Code Online (Sandbox Code Playgroud)
比较的顺序取决于所使用的排序算法,这取决于您使用的 Java 版本。例如,在 Java 11 中,排序算法默认为TimSort,这是一种从更知名的归并排序和插入排序算法派生的排序算法。
| 归档时间: |
|
| 查看次数: |
42 次 |
| 最近记录: |