一般來說,你會更好,創造一個比較,而不是實現媲美。然後,您可以傳遞到集合排序方法:
Collections.sort(myArrayList, new Comparator<MyObject>(){
public int compare(MyObject o1, MyObject o2){
return Integer.compare(o1.value == o2.value);
}
});
編輯:
閱讀一些有機磷農藥的意見後,我們可以證明compareTo方法的確是被稱爲:
public class TestClass implements Comparable<TestClass> {
private int value;
public int getValue(){
return this.value;
}
public void setValue(int v){
this.value = v;
}
@Override
public int compareTo(TestClass arg) {
System.out.println("In compareTo");
return Integer.compare(this.value, arg.value);
}
}
然後如果我們做到以下幾點:
ArrayList<TestClass> a = new ArrayList<>();
for(int i = 0; i < 10; i++){
TestClass t = new TestClass();
t.setValue(i);
a.add(t);
}
System.out.println("Before sort.");
Collections.sort(a);
我們將看到的compareTo甲基OD正在從排序方法中調用,因爲終端將展示我們的跟蹤語句:
Before sort.
In compareTo
In compareTo
In compareTo
In compareTo
In compareTo
In compareTo
In compareTo
In compareTo
In compareTo
所以你的意思是,E1和E2必須是在同一個班? – ksdawq
是的,或者是另一個的子類。 – blm
@ksdawq不一定。只要元素實現「可比」。 – manouti