<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) 方法用于對象數(shù)組按用戶自定義規(guī)則排序。
    Collections.sort(List<T>, Comparator < ? super T > c)方法用于對象集合按用戶自定義規(guī)則排序。

    Comparable用在對象本身,說明這個(gè)對象是可以被比較的,也就是說可以被排序的。(String和Integer之所以可以比較大小,是因?yàn)樗鼈兌紝?shí)現(xiàn)了Comparable接口,并實(shí)現(xiàn)了compareTo()方法)。
    Compator用在對象外,相當(dāng)于定義了一個(gè)排序算法。
    所以當(dāng)對象本身實(shí)現(xiàn)了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;
        }
    }
    輸出結(jié)果:
    2 1 3 
    1 2 3
    這是對象數(shù)組用了Comparator的結(jié)果。

    下面看對象自身實(shí)現(xiàn)了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());
            }
        }
        
    }
    輸出結(jié)果:
    2 25
    1 28
    上述都是Arrays.sort()的應(yīng)用方式,同理Collections.sort()一樣的實(shí)現(xiàn),代碼如下,比較簡單:
    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自身實(shí)現(xiàn)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自身實(shí)現(xiàn)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;
        }
    }
    輸出結(jié)果:
    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
    主站蜘蛛池模板: 国产成人免费片在线观看| 亚洲精品免费网站| 青青草97国产精品免费观看| 亚洲欧洲国产精品久久| 国产精品亚洲A∨天堂不卡| 日本不卡高清中文字幕免费| 国产卡一卡二卡三免费入口| 久久精品国产亚洲AV高清热| 亚洲网站在线观看| 亚洲色大成网站www久久九| 亚洲免费人成视频观看| 亚洲hairy多毛pics大全| 老外毛片免费视频播放| 一级女性全黄生活片免费看| 国产成人AV免费观看| 国产又大又粗又长免费视频| 国产大片51精品免费观看| 亚洲第一区精品日韩在线播放| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 久久久久亚洲av毛片大| 久久久亚洲精品视频| 亚洲ts人妖网站| jizz在线免费观看| 国产片AV片永久免费观看| 国产在线观看免费完整版中文版| 亚洲精品无码AV人在线播放| 亚洲国产成人久久三区| 无码的免费不卡毛片视频| 无码人妻一区二区三区免费看| 2021免费日韩视频网| 亚洲一区二区三区无码中文字幕| 亚洲免费在线视频观看| 久久青草91免费观看| 亚洲国产电影av在线网址| 鲁死你资源站亚洲av| 亚洲自偷自偷精品| 99在线免费视频| 亚洲一级免费毛片| 99在线视频免费观看| 四虎免费大片aⅴ入口| a在线观看免费网址大全|