一般来说,你会更好,创造一个比较,而不是实现媲美。然后,您可以传递到集合排序方法:
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