天天看點

comparable的compareTo( )方法

就是說,如果你想對自己寫的類排序,你就把自己寫的這個類實作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,順序跟我放入的順序是相反的。就是這樣實作排序的。