Java(TreeMap,Set,List)排序__Java

來源:互聯網
上載者:User

對於Set

要實現排序功能,一般有兩種途徑,這裡對基本類型不適用,基本類型一般有Arrays中的靜態方法.

1.對象本身實現Comparable介面,那麼該類的執行個體就是可以排序的.
有關Comparable: http://blog.csdn.net/treeroot/archive/2004/09/09/99613.aspx
只要實現了Comparable介面,就可以調用Collections的sort方法對集合中的元素排序.

2.指定一個Comparator,也就是實現了Comparator的類的一個執行個體.
但是Java本身只提供了一個Comparator的實現,就是Collections.reverseOrder().
該方法返回的是一個已經實現了Comparable介面的反序.

看一下Comparator的全部內容:

public interface Comparator {
int compare(Object o1, Object o2);
boolean equals(Object obj);
}
定義了兩個方法,其實我們一般都只需要實現compare方法就行了,因為類都是預設從Object繼承
所以會使用Object的equals方法.
Comparator一般都作為一個匿名類出現,對於沒有實現Comparable的對象的集合,排序的時候
需要指定一個Comparator.

這裡舉例說明
對於實現了Comparable的類我們就用最簡單的Integer
List list=new ArrayList();
list.add(new Integer(3));
list.add(new Integer(53));
list.add(new Integer(34));
Collections.sort(list);

對於沒有實現Comparable的,我們就用Object,按照hashCode大小來排序.
List list= new ArrayList();
list.add(new Object());
list.add(new Object());
list.add(new Object());
Collections.sort(list,new Comparator(){ public int compare(Object o1, Object o2){
return (o1.hashCode()-o2.hashCode());
})

對於Map
實現Comparator方法
class TComp implements Comparator {
    public int compare(Object a, Object b) {
        int i, j, k;
        String aStr, bStr;
        aStr = (String)a;
        bStr = (String)b;
        // find index of beginning of last name
        i = aStr.lastIndexOf(' ');
        j = bStr.lastIndexOf(' ');
        k = aStr.substring(i).compareTo(bStr.substring(j));
        if (k == 0) // last names match, check entire name
            return aStr.compareTo(bStr);
        else
            return k;
    }
}


public class TreeMapSort {
    public static void main(String[] args) {
        TreeMap tm = new TreeMap(new TComp());
        tm.put("John Doe", new Double(3434.34));
        tm.put("Tom Smith", new Double(123.22));
        tm.put("Jane Baker", new Double(1378.00));
        tm.put("Todd Hall", new Double(99.22));
        tm.put("Ralph Smith", new Double(-19.08));

        System.out.println(tm.toString());
    }
}

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.