zoukankan      html  css  js  c++  java
  • java如何对list进行排序

    package com.fh.util;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
     
    import org.apache.commons.beanutils.BeanComparator;
    import org.apache.commons.collections.ComparatorUtils;
    import org.apache.commons.collections.comparators.ComparableComparator;
    import org.apache.commons.collections.comparators.ComparatorChain;
     
    public class SortUtil {
        public static void main(String[] args) {
            System.out.println(testMapSort());
        }
         
        /**
         * 对list进行排序
         * @param sortList 需要排序的list
         * @param param1   排序的参数名称
         * @param orderType 排序类型:正序-asc;倒序-desc  
         */
        public static List sort(List sortList, String param1, String orderType){
            Comparator mycmp1 = ComparableComparator.getInstance ();
            if("desc".equals(orderType)){
                mycmp1 = ComparatorUtils. reversedComparator(mycmp1); //逆序(默认为正序)
            }
             
            ArrayList<Object> sortFields = new ArrayList<Object>();
            sortFields.add( new BeanComparator(param1 , mycmp1)); //主排序(第一排序)
     
            ComparatorChain multiSort = new ComparatorChain(sortFields);
            Collections.sort (sortList , multiSort);
             
            return sortList;
        }
         
        /**
         * 对list进行排序
         * @param sortList 需要排序的list
         * @param param1   排序的参数名称:参数长度
         * @param param2   排序的参数名称:排序参数
         * @param orderType 排序类型:正序-asc;倒序-desc  
         */
        public static List sortParam2(List sortList, String param1,String param2, String orderType){
            Comparator mycmp1 = ComparableComparator.getInstance ();
            Comparator mycmp2 = ComparableComparator.getInstance ();
            if("desc".equals(orderType)){
                mycmp1 = ComparatorUtils. reversedComparator(mycmp1); //逆序(默认为正序)
            }
             
            ArrayList<Object> sortFields = new ArrayList<Object>();
            sortFields.add( new BeanComparator(param1 , mycmp1)); //主排序(第一排序)
            sortFields.add( new BeanComparator(param2 , mycmp2)); //主排序(第一排序)
     
            ComparatorChain multiSort = new ComparatorChain(sortFields);
            Collections.sort (sortList , multiSort);
             
            return sortList;
        }
         
        public static List testMapSort(){
            List sortList = new ArrayList();
             
            Map map = new HashMap();
            map.put("name", "1");
            map.put("age", "1");
             
            Map map2 = new HashMap();
            map2.put("name", "2");
            map2.put("age", "13");
             
            Map map1 = new HashMap();
            map1.put("name", "2");
            map1.put("age", "12");
             
            List list = new ArrayList();
            list.add(map);
            list.add(map1);
            list.add(map2);
             
            //return sort(list, "age", "asc");
            return sortParam2(list, "name", "age", "asc");
        }
         
    }
  • 相关阅读:
    华为"128为大整数相加"机试题
    ORA-12545: 因目标主机或对象不存在, 连接失败
    VS2010 安装使用STLPort
    Debian 入门安装与配置1
    CF1072A Palindromic Twist 思维
    解决让刷新页面时不提示 "重试或取消”对话框
    php优化及高效提速问题小结
    让Tomcat支持php
    Php邮件发送源码
    使用iconv提示未知错误
  • 原文地址:https://www.cnblogs.com/zuge/p/6854587.html
Copyright © 2011-2022 走看看