<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    cuiyi's blog(崔毅 crazycy)

    記錄點(diǎn)滴 鑒往事之得失 以資于發(fā)展
    數(shù)據(jù)加載中……

    java基礎(chǔ)(五):怎么對集合對象按某個規(guī)則排序 Comparable vs Comparator

    對策: 集合中的對象應(yīng)該實現(xiàn)Comparable接口,或者實現(xiàn)Comparator接口

    兩者區(qū)別:

    1) Comparable接口只有一個方法 compareTo(obj:Object):int
    ?? Comparator接口有兩個方法:?
    ????????? compare(o1:Object, o2:Object):int;
    ????????? equals(obj:Object):boolean

    ??? 用法:Collections.sort(obj:Collection)

    2) Comparable位于java.lang包
    ?? Comparator位于java.util包

    3) Comparable做為更一般的接口,基本可實現(xiàn)與自己的特定比較

    ??? 用法:Collections.sort(obj:Collection, new Compartor());

    ??? 用法:Collections.sort(obj:Collection, new Compartor(public int compare(o1:Object, o2:Object)){return n:int});

    ?? Comparator更適合在沒有實現(xiàn)Comparable的集合對象類中;更像封裝的一種算法,將操作與算法分離,應(yīng)該是裝飾模式(Decorator Pattern)和訪問者模式(Visitor?? Pattern)的體現(xiàn)



    以下是引用

    要實現(xiàn)排序功能,一般有兩種途徑,這里對基本類型不適用,基本類型一般有Arrays中的靜態(tài)方法.

    1.對象本身實現(xiàn)Comparable接口,那么該類的實例就是可以排序的.
    有關(guān)Comparable:
    http://blog.csdn.net/treeroot/archive/2004/09/09/99613.aspx
    只要實現(xiàn)了Comparable接口,就可以調(diào)用Collections的sort方法對集合中的元素排序.

    2.指定一個Comparator,也就是實現(xiàn)了Comparator的類的一個實例.
    但是Java本身只提供了一個Comparator的實現(xiàn),就是Collections.reverseOrder().
    該方法返回的是一個已經(jīng)實現(xiàn)了Comparable接口的反序.

    看一下Comparator的全部內(nèi)容:

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

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

    對于沒有實現(xiàn)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());
    });

    posted on 2006-12-22 02:00 crazycy 閱讀(2657) 評論(0)  編輯  收藏 所屬分類: JavaSE語言

    主站蜘蛛池模板: 亚洲乱码日产精品a级毛片久久| 国产日产亚洲系列最新| 日韩亚洲AV无码一区二区不卡| 91久久亚洲国产成人精品性色| 亚洲中文字幕无码爆乳app| 国产精品久久免费| 色老板亚洲视频免在线观| 在线观看免费人成视频色9| 亚洲中文字幕一二三四区| 国产美女被遭强高潮免费网站| 苍井空亚洲精品AA片在线播放 | 亚洲精品456在线播放| 精品免费人成视频app| 亚洲色欲色欲www| 免费看AV毛片一区二区三区| 亚洲精品无码久久久久牙蜜区| 免费一级国产生活片| 亚洲噜噜噜噜噜影院在线播放| 国产大片91精品免费观看不卡| 亚洲精品成人图区| 女人被男人桶得好爽免费视频| 亚洲av无码成人精品国产| 亚洲午夜精品一级在线播放放| 91视频精品全国免费观看| 亚洲综合日韩中文字幕v在线| 国产免费久久精品99re丫y| 欧洲亚洲综合一区二区三区| 久久亚洲中文字幕精品一区四| 无码人妻久久一区二区三区免费| 91亚洲国产成人久久精品网址| 在线不卡免费视频| 一级成人生活片免费看| 亚洲酒色1314狠狠做| 日本视频免费在线| 国产一级黄片儿免费看| 亚洲国产美女精品久久| 亚洲AV中文无码乱人伦在线视色| 亚洲精品色播一区二区| 国产亚洲一区二区精品| 丁香花在线观看免费观看| 一级特黄录像视频免费|