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

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

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

    隨筆-12  評論-6  文章-0  trackbacks-0
    Arrays.sort(T[], Comparator < ? super T > c) 方法用于對象數組按用戶自定義規則排序。
    Collections.sort(List<T>, Comparator < ? super T > c)方法用于對象集合按用戶自定義規則排序。

    Comparable用在對象本身,說明這個對象是可以被比較的,也就是說可以被排序的。(String和Integer之所以可以比較大小,是因為它們都實現了Comparable接口,并實現了compareTo()方法)。
    Compator用在對象外,相當于定義了一個排序算法。
    所以當對象本身實現了Comparable接口,那么Arrays.sort(T[])就可以了。同理Collections.sort(List<T>)就可以了。

    還是代碼來的直接:
    package com.zx.ww.comparable;

    import java.util.Arrays;
    import java.util.Comparator;

    public class ComparatorTest {
        
        
    public static void main(String[] args) {
            Dog d1 
    = new Dog(2);
            
            Dog d2 
    = new Dog(1);
            
            Dog d3 
    = new Dog(3);
            
            Dog[] dogArray 
    = {d1, d2, d3};
            
            printDogs(dogArray);
            
            Arrays.sort(dogArray, 
    new DogSizeComparator());
            
            printDogs(dogArray);
        }
        
        
    public static void printDogs(Dog[] dogArray) {
            
    for (Dog dog : dogArray) {
                System.out.print(dog.size
    +" ");
            }
            System.out.println();
        }

    }

    class Dog{
        
    int size;
        
    public Dog(int size) {
            
    this.size = size;
        }
    }

    class DogSizeComparator implements Comparator<Dog> {
        @Override
        
    public int compare(Dog dog1, Dog dog2) {
            
    // TODO Auto-generated method stub
            return dog1.size - dog2.size;
        }
    }
    輸出結果:
    2 1 3 
    1 2 3
    這是對象數組用了Comparator的結果。

    下面看對象自身實現了Comparable接口的方式:
    /**
     * 
     
    */
    package com.zx.ww.comparable;

    import java.util.Arrays;

    /**
     * 
    @author wuwei
     * 2014年9月29日
     
    */
    public class User implements Comparable<Object>{

        
    private int id;
        
        
    private String name;
        
        
    private int age;
        
        
    public User(int id, String name, int age) {
            
    this.id = id;
            
    this.name = name;
            
    this.age = age;
        }
        
        
        
        
    public int getId() {
            
    return id;
        }



        
    public void setId(int id) {
            
    this.id = id;
        }



        
    public String getName() {
            
    return name;
        }



        
    public void setName(String name) {
            
    this.name = name;
        }



        
    public int getAge() {
            
    return age;
        }



        
    public void setAge(int age) {
            
    this.age = age;
        }


        @Override
        
    public int compareTo(Object o) {
            
    // TODO Auto-generated method stub
            return this.age - ((User)o).getAge();
        }
        
        
    public static void main(String[] args) {
            User[] users 
    = new User[] {new User(1,"zhangsan",28), new User(2,"lisi",25)};
            Arrays.sort(users);
            
    for (int i = 0; i < users.length; i++) {
                User user 
    = users[i];
                System.out.println(user.getId()
    +" "+user.getAge());
            }
        }
        
    }
    輸出結果:
    2 25
    1 28
    上述都是Arrays.sort()的應用方式,同理Collections.sort()一樣的實現,代碼如下,比較簡單:
    package com.zx.ww.comparable;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;

    public class CollectionSortTest {

        
    public static void main(String[] args) {
            List
    <String> list = new ArrayList<String>();
            list.add(
    "ac");
            list.add(
    "ab");
            list.add(
    "aa");
            list.add(
    "db");
            list.add(
    "ca");
            
            
    for (String string : list) {
                System.out.print(string 
    + " ");
            }
            System.out.println();
            Collections.sort(list);
            
            
    for (String string : list) {
                System.out.print(string 
    + " ");
            }
            System.out.println();
            
            
    //對象A自身實現Comparable接口
            List<A> aList = new ArrayList<A>();
            aList.add(
    new A("wuwei"1));
            aList.add(
    new A("zhangsan"3));
            aList.add(
    new A("lisi"2));
            
    for (A a : aList) {
                System.out.print(a
    +" ");
            }
            System.out.println();
            Collections.sort(aList);
            
    for (A a : aList) {
                System.out.print(a
    +" ");
            }
            System.out.println();
            
            
    //重寫Conparator接口方法
            List<B> bList = new ArrayList<B>();
            bList.add(
    new B("wuwei"1));
            bList.add(
    new B("zhangsan"3));
            bList.add(
    new B("lisi"2));
            
    for (B b : bList) {
                System.out.print(b
    +" ");
            }
            System.out.println();
            Collections.sort(bList, 
    new Comparator<B>() {

                @Override
                
    public int compare(B b1, B b2) {
                    
    // TODO Auto-generated method stub
                    return b1.getCount().compareTo(b2.getCount());
                }
            });
            
    for (B b : bList) {
                System.out.print(b
    +" ");
            }
            System.out.println();
            
        }
        
        
    }

    //對象A自身實現Comparable接口
    class A implements Comparable<A>{

        
    private String name;
        
        
    private Integer order;
        
        
    public A(String name, Integer order) {
            
    this.name = name;
            
    this.order = order;
        }
        
        
    public String getName() {
            
    return name;
        }

        
    public void setName(String name) {
            
    this.name = name;
        }

        
    public Integer getOrder() {
            
    return order;
        }

        
    public void setOrder(Integer order) {
            
    this.order = order;
        }

        
    public String toString() {
            
    return "name is " +name+" order is "+order;
        }
        
        @Override
        
    public int compareTo(A o) {
            
    // TODO Auto-generated method stub
            return this.order.compareTo(o.getOrder());
        }
        
    }

    class B{
        
    private String name;
        
        
    private Integer count;
        
        
    public B(String name, Integer count) {
            
    this.name = name;
            
    this.count = count;
        }

        
    public String getName() {
            
    return name;
        }

        
    public void setName(String name) {
            
    this.name = name;
        }

        
    public Integer getCount() {
            
    return count;
        }

        
    public void setCount(Integer count) {
            
    this.count = count;
        }
        
        
    public String toString() {
            
    return "name is "+name+" count is "+count;
        }
    }
    輸出結果:
    ac ab aa db ca 
    aa ab ac ca db 
    name is wuwei order is 
    1 name is zhangsan order is 3 name is lisi order is 2 
    name is wuwei order is 
    1 name is lisi order is 2 name is zhangsan order is 3 
    name is wuwei count is 
    1 name is zhangsan count is 3 name is lisi count is 2 
    name is wuwei count is 
    1 name is lisi count is 2 name is zhangsan count is 3








    posted on 2014-09-29 16:08 小人物_Amor 閱讀(1118) 評論(0)  編輯  收藏 所屬分類: java
    主站蜘蛛池模板: av无码久久久久不卡免费网站| 亚洲视频免费在线看| a毛片在线看片免费| 中文字幕免费视频| 精品少妇人妻AV免费久久洗澡| 国产一级高清视频免费看| 亚洲精品无码永久在线观看你懂的| 久久精品国产亚洲AV果冻传媒| 亚洲国产美女福利直播秀一区二区| 亚洲综合无码一区二区痴汉| 亚洲免费一区二区| 99精品全国免费观看视频| 亚洲欧洲自拍拍偷精品 美利坚| 一级毛片免费一级直接观看| 性生交片免费无码看人| 亚洲va久久久噜噜噜久久天堂| 亚洲AV成人精品日韩一区| 色欲国产麻豆一精品一AV一免费 | 国产精品久久永久免费| 亚洲日本va中文字幕久久| 亚洲欧美日韩中文无线码| 美丽姑娘免费观看在线观看中文版| 亚洲国产专区一区| 美女羞羞视频免费网站| 午夜神器成在线人成在线人免费| 亚洲黄色免费电影| 国产午夜精品久久久久免费视| 亚洲国产精品视频| 青青草国产免费国产是公开| 日本视频免费在线| 自拍偷自拍亚洲精品播放| 日本特黄特色免费大片| 美女视频黄a视频全免费网站一区 美女视频黄a视频全免费网站色 | 久久国产成人精品国产成人亚洲| 亚洲妇女无套内射精| 成在人线AV无码免费| 亚洲av无码专区在线电影天堂| 免费观看毛片视频| 美女黄频a美女大全免费皮| mm1313亚洲国产精品美女| 国产福利免费视频|