collections工具类 排序

Collections:操作集合元素的工具类,由静态方法组成
    void sort(List): 集合元素排序
    void sort(List<T> list, Comparator<? super T> c) 集合元素排序
    例如:有一个list集合(ArrayList),元素排序
        方法1:
        Collections.sort(list);//必须保证list集合中的元素已经实了Comparable接口
        方法2:
        //自定义比较器的类,实现Comparator接口
        class XxxComXxxComparator implements Comparator<元素类型>(){
            public int compare(元素类型 t1, 元素类型 t2){
                //比较大小的代码
                return 0;
            }
        }
 
        Collections.sort(list, new XxxComparator());
        //XxxComparator必须是实现了Comparator接口的实现类,可以使用匿名实现,如下:
        Collections.sort(list, new Comparator<元素类型>(){
            public int compare(元素类型 t1, 元素类型 t2){
                //比较大小的代码
                return 0;
            }
        });

 

 
    int binarySearch(List, E):二分法查找
    List必须是实现自然排序(元素类型实现了Comparable接口)后,才能使用二分法查找
    返回负数表示查找失败
 
 
    void reverse(List) :将列表元素反转
 
 
    void shuffle(List) :将列表元素混排
    void shuffle(List<?> list, Random rnd) 将列表元素混排
 

 
//自定义排序算法
for(int i=0; i<col.size()-1; i++){
    for(int j=i+1; j<col.size();j++){
        if(比较索引号i和j对应位置元素的大小){
            //两个元素交换
            Object t1 = col.get(i);
            Object t2 = col.get(j);
            col.set(i,t2);
            col.set(j,t1);           
        }
    }
}

 

 
//使用Collections中的sort()实现自然排序
第一步:
    实体类实现Comparable接口,实现compareTO()方法。
第二步:
    调用sort()方法
    Collections.sort(list集合)
 
//使用Collections中的sort()实现指定比较 器排序
第一步:
    单独定义一个比较器实现Comparator接口
    有两种方法:
        1.内部类
        class 比较器名 implements Comparator<元素类型>{
            @Override
            public int compare(元素类型 o1, 元素类型 o1){
                o1元素与o2元素的比较
                o1大于o2返回正数
                o1小于o2返回负数
                o1,o2相等,返回0
 
                return 0;
            }
        }
 
 
        2.匿名内部类(不要单独定义,在调用时定义)
第二步:   
    调用sort()方法1
    Collections.sort(list集合, new 比较器() );
    调用sort()方法2:匿名内部类
    Collections.sort(list集合, new Comparator<元素类型>(){
        public int compare(元素类型 o1, 元素类型 o1){
                o1元素与o2元素的比较
                o1大于o2返回正数
                o1小于o2返回负数
                o1,o2相等,返回0
 
                return 0;
            }
    } );
 
 
 
posted @ 2018-01-04 10:17  zachary7  阅读(100)  评论(0编辑  收藏  举报