就是說,如果你想對自己寫的類排序,你就把自己寫的這個類實作Comparable接口,然後寫一個comparaTo方法來規定這個類的對象排序的順序。
在這個方法中,如果傳回-1,則目前對象排前面,傳回1,就排後面 ,0,就相等。例如:
import java.util.*;
public class A {
public static void main(String args[]) {
Example e1 = new Example(), e2 = new Example(), e3 = new Example();
e1.i = 1;
e2.i = 2;
e3.i = 3;
List l = new ArrayList();
l.add(e1);
l.add(e2);
l.add(e3);
Collections.sort(l);
for(int i = 0; i < l.size(); i++) {
System.out.println(l.get(i));
}
}
}
class Example implements Comparable {
int i;
public int compareTo(Object o) {
if (this.i > ((Example)o).i ) return -1;
else if (this.i < ((Example)o).i ) return 1;
else return 0;
}
public String toString() {
return "Example" + this.i;
}
}
Example是自定義寫的類,裡面就一個int成員i。我們就可以根據這個i的大小來排序。在compareTo方法中,我定義了如果i大,那麼就傳回-1,則該對象就跑到前面去了。當然,如果你想定義i大的應該往後排,那麼你可以改變傳回值,從-1改為1。就是說 ,if裡面是你要比較的條件,你可以根據這個條件來傳回-1,0,1來将符合條件的對象放到前面、後面或者是不變。
在main方法中,我建立了3個Example對象,裡面的i是1,2,3。注意我放入的順序,是e1,e2,e3,當我調用sort方法後,再看輸出結果,可以看到是e3,e2,e1,順序跟我放入的順序是相反的。就是這樣實作排序的。