我的日常

登录/注册
您现在的位置:论坛 资料库 JAVA开发 > 对list进行排序
总共48087条微博

动态微博

查看: 1803|回复: 0

对list进行排序

[复制链接]

279

主题

41

听众

689

金钱

版主

该用户从未签到

跳转到指定楼层
楼主
发表于 2015-03-31 08:58:51 |只看该作者 |倒序浏览
  1. package com.fh.util;

  2. import java.util.ArrayList;
  3. import java.util.Collections;
  4. import java.util.Comparator;
  5. import java.util.HashMap;
  6. import java.util.List;
  7. import java.util.Map;

  8. import org.apache.commons.beanutils.BeanComparator;
  9. import org.apache.commons.collections.ComparatorUtils;
  10. import org.apache.commons.collections.comparators.ComparableComparator;
  11. import org.apache.commons.collections.comparators.ComparatorChain;

  12. public class SortUtil {
  13.         public static void main(String[] args) {
  14.                 System.out.println(testMapSort());
  15.         }
  16.        
  17.         /**
  18.          * 对list进行排序
  19.          * @param sortList 需要排序的list
  20.          * @param param1   排序的参数名称
  21.          * @param orderType 排序类型:正序-asc;倒序-desc  
  22.          */
  23.         public static List sort(List sortList, String param1, String orderType){
  24.                 Comparator mycmp1 = ComparableComparator.getInstance ();
  25.                 if("desc".equals(orderType)){
  26.                         mycmp1 = ComparatorUtils. reversedComparator(mycmp1); //逆序(默认为正序)
  27.                 }
  28.                
  29.                 ArrayList<Object> sortFields = new ArrayList<Object>();
  30.                 sortFields.add( new BeanComparator(param1 , mycmp1)); //主排序(第一排序)

  31.                 ComparatorChain multiSort = new ComparatorChain(sortFields);
  32.                 Collections.sort (sortList , multiSort);
  33.                
  34.                 return sortList;
  35.         }
  36.        
  37.         /**
  38.          * 对list进行排序
  39.          * @param sortList 需要排序的list
  40.          * @param param1   排序的参数名称:参数长度
  41.          * @param param2   排序的参数名称:排序参数
  42.          * @param orderType 排序类型:正序-asc;倒序-desc  
  43.          */
  44.         public static List sortParam2(List sortList, String param1,String param2, String orderType){
  45.                 Comparator mycmp1 = ComparableComparator.getInstance ();
  46.                 Comparator mycmp2 = ComparableComparator.getInstance ();
  47.                 if("desc".equals(orderType)){
  48.                         mycmp1 = ComparatorUtils. reversedComparator(mycmp1); //逆序(默认为正序)
  49.                 }
  50.                
  51.                 ArrayList<Object> sortFields = new ArrayList<Object>();
  52.                 sortFields.add( new BeanComparator(param1 , mycmp1)); //主排序(第一排序)
  53.                 sortFields.add( new BeanComparator(param2 , mycmp2)); //主排序(第一排序)

  54.                 ComparatorChain multiSort = new ComparatorChain(sortFields);
  55.                 Collections.sort (sortList , multiSort);
  56.                
  57.                 return sortList;
  58.         }
  59.        
  60.         public static List testMapSort(){
  61.                 List sortList = new ArrayList();
  62.                
  63.                 Map map = new HashMap();
  64.                 map.put("name", "1");
  65.                 map.put("age", "1");
  66.                
  67.                 Map map2 = new HashMap();
  68.                 map2.put("name", "2");
  69.                 map2.put("age", "13");
  70.                
  71.                 Map map1 = new HashMap();
  72.                 map1.put("name", "2");
  73.                 map1.put("age", "12");
  74.                
  75.                 List list = new ArrayList();
  76.                 list.add(map);
  77.                 list.add(map1);
  78.                 list.add(map2);
  79.                
  80.                 //return sort(list, "age", "asc");
  81.                 return sortParam2(list, "name", "age", "asc");
  82.         }
  83.        
  84. }
复制代码



科帮网 1、本主题所有言论和图片纯属会员个人意见,与本社区立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与科帮网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和科帮网的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、科帮网管理员和版主有权不事先通知发贴者而删除本文


JAVA爱好者①群:JAVA爱好者① JAVA爱好者②群:JAVA爱好者② JAVA爱好者③ : JAVA爱好者③

快速回复
您需要登录后才可以回帖 登录 | 立即注册

   

关闭

站长推荐上一条 /1 下一条

发布主题 快速回复 返回列表 联系我们 官方QQ群 科帮网手机客户端
快速回复 返回顶部 返回列表