java集合排序

1、java实现集合排序就两种方式
第一种:实体实现Comparable 接口,再 Collections.sort();
第二种:直接一点,

    Collections.sort(students, new Comparator<Student>() {
            public int compare(Student arg0, Student arg1) {
                return arg0.getScore().compareTo(arg1.getScore());
            }
        });

详细一点,降序:

Collections.sort(students, new Comparator<Student>(){  

         * int compare(Student o1, Student o2) 返回一个基本类型的整型,  
         * 返回负数表示:o1 小于o2,  
         * 返回0 表示:o1和o2相等,  
         * 返回正数表示:o1大于o2。  

                public int compare(PerReportDTO o1, PerReportDTO o2) {  
                    if(o1.getFinal_accord_pro() < o2.getFinal_accord_pro()){  
                        return 1;  
                    }  
                    if(o1.getFinal_accord_pro() == o2.getFinal_accord_pro()){  
                        return 0;  
                    }  
                    return -1;  
                }  
            });  

当然还可以,多属性排序:

 /** 
     * 对list的元素按照多个属性名称排序, 
     * list元素的属性可以是数字(byte、short、int、long、float、double等,支持正数、负数、0)、char、String、java.util.Date 
     *  
     *  
     * @param lsit 
     * @param sortname 
     *            list元素的属性名称 
     * @param isAsc 
     *            true升序,false降序 
     */  
    public static <E> void sort(List<E> list, final boolean isAsc, final String... sortnameArr) {  
        Collections.sort(list, new Comparator<E>() {  

            public int compare(E a, E b) {  
                int ret = 0;  
                try {  
                    for (int i = 0; i < sortnameArr.length; i++) {  
                        ret = _listUtils.compareObject(sortnameArr[i], isAsc, a, b);  
                        if (0 != ret) {  
                            break;  
                        }  
                    }  
                } catch (Exception e) {  
                    e.printStackTrace();  
                }  
                return ret;  
            }  
        });  
    }  
 // 按userId升序、username降序、birthDate升序排序  
        String [] sortNameArr = {"userId","username","birthDate"};  
        boolean [] isAscArr = {true,false,true};  
        _listUtils.sort(list,sortNameArr,isAscArr);  
        System.out.println("\n--------按按userId升序、username降序、birthDate升序排序(如果userId相同,则按照username降序,如果username相同,则按照birthDate升序)------------------");  
        printfUserInfoList(list);  

        // 按userId、username、birthDate都升序排序  
        _listUtils.sort(list, true, "userId", "username","birthDate");  
        System.out.println("\n--------按userId、username、birthDate排序(如果userId相同,则按照username升序,如果username相同,则按照birthDate升序)------------------");  
        printfUserInfoList(list);  

        // 按userId、username都倒序排序  
        _listUtils.sort(list, false, "userId", "username");  
        System.out.println("\n--------按userId和username倒序(如果userId相同,则按照username倒序)------------------");  
        printfUserInfoList(list);  

        // 按username、birthDate都升序排序  
        _listUtils.sort(list, true, "username", "birthDate");  
        System.out.println("\n---------按username、birthDate升序(如果username相同,则按照birthDate升序)-----------------");  
        printfUserInfoList(list);  

        // 按birthDate倒序排序  
        _listUtils.sort(list, false, "birthDate");  
        System.out.println("\n---------按birthDate倒序-----------------");  
        printfUserInfoList(list);  

        // 按fRate升序排序  
        _listUtils.sort(list, true, "fRate");  
        System.out.println("\n---------按fRate升序-----------------");  
        printfUserInfoList(list);  

        // 按ch倒序排序  
        _listUtils.sort(list, false, "ch");  
        System.out.println("\n---------按ch倒序-----------------");  
        printfUserInfoList(list);  

工具类下载地址:加QQ群494808400 在群文件->java工具类栏目中。

全CSDN的丰(好)色(se)博客,这里有书本看不到的Java技术,电影院禁播的电影,欢迎关注QQ群494808400

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值