您的位置:首页 > 编程语言 > Java开发

java基础—— Collections.sort的两种用法,简单明了 。

2013-04-01 14:33 471 查看
来源:http://gwh-08.iteye.com/blog/1233401

/** 

* @author guwh 

* @version 创建时间:2011-11-3 上午10:49:36 

* 类说明 

*/   

package com.jabberchina.test;  

  

import java.util.ArrayList;  

import java.util.Collections;  

import java.util.Comparator;  

import java.util.List;  

  

public class SortTest {  

      

      

      

    public static void main(String[] args) {  

        List<String> lists = new ArrayList<String>();  

        List<A> list = new ArrayList<A>();  

        List<B> listB = new ArrayList<B>();  

        lists.add("5");  

        lists.add("2");  

        lists.add("9");  

        //lists中的对象String 本身含有compareTo方法,所以可以直接调用sort方法,按自然顺序排序,即升序排序  

        Collections.sort(lists);  

          

        A aa = new A();  

        aa.setName("aa");  

        aa.setOrder(1);  

        A bb = new A();  

        bb.setName("bb");  

        bb.setOrder(2);  

        list.add(bb);  

        list.add(aa);  

        //list中的对象A实现Comparable接口  

        Collections.sort(list);  

          

        B ab = new B();  

        ab.setName("ab");  

        ab.setOrder("1");  

        B ba = new B();  

        ba.setName("ba");  

        ba.setOrder("2");  

        listB.add(ba);  

        listB.add(ab);  

        //根据Collections.sort重载方法来实现  

        Collections.sort(listB,new Comparator<B>(){  

            @Override  

            public int compare(B b1, B b2) {  

                return b1.getOrder().compareTo(b2.getOrder());  

            }  

              

        });  

          

        System.out.println(lists);  

        System.out.println(list);  

        System.out.println(listB);  

          

    }  

  

}  

  

class A implements Comparable<A>{  

    private String name;  

    private Integer 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;  

    }  

    @Override  

    public String toString() {  

        return "name is "+name+" order is "+order;  

    }  

    @Override  

    public int compareTo(A a) {  

        return this.order.compareTo(a.getOrder());  

    }  

      

}  

  

class B{  

    private String name;  

    private String order;  

    public String getName() {  

        return name;  

    }  

    public void setName(String name) {  

        this.name = name;  

    }  

    public String getOrder() {  

        return order;  

    }  

    public void setOrder(String order) {  

        this.order = order;  

    }  

    @Override  

    public String toString() {  

        return "name is "+name+" order is "+order;  

    }  

}  

  

打印的结果为:  

 [2, 5, 9]  

[name is aa order is 1, name is bb order is 2]  

[name is ab order is 1, name is ba order is 2]  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: