zoukankan      html  css  js  c++  java
  • 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;
                }
        } );
     
     
     
  • 相关阅读:
    2.2.16锁对象的改变
    2.2.15内置类与同步:测试2
    2.2.14内置类与同步:测试1
    2.2.13内置类与静态内置类
    libev客户端
    Linux下sqlite3编程
    ds18b20驱动及应用程序
    ds18b20采集温度并上报服务器
    linux下GPRS模块ppp拨号上网
    linux下GPRS模块的应用程序
  • 原文地址:https://www.cnblogs.com/zachary7/p/8191551.html
Copyright © 2011-2022 走看看