当前位置: 首页 > news >正文

通用排序工具类

1,实际应用:

Java代码   收藏代码
  1. List<OrderInfoBean> orderInfoBeans = commitOrderDto.getValue();  
  2.         SortList<OrderInfoBean> sortList = new SortList<OrderInfoBean>();  
  3.         sortList.Sort(orderInfoBeans, "getCreateTime""desc");  

 

2,工具类sortList源码

Java代码   收藏代码
  1. package com.gov.util;  
  2.   
  3. import java.lang.reflect.InvocationTargetException;  
  4. import java.lang.reflect.Method;  
  5. import java.util.Collections;  
  6. import java.util.Comparator;  
  7. import java.util.List;  
  8.   
  9. /*** 
  10.  * 用户排序 
  11.  * @author huangwei 
  12.  * 2015年7月1日 
  13.  * @param <E> 
  14.  */  
  15. public class SortList<E> {  
  16.     public void Sort(List<E> list, final String method, final String sort) {  
  17.         Collections.sort(list, new Comparator() {  
  18.             public int compare(Object a, Object b) {  
  19.                 int ret = 0;  
  20.                 try {  
  21.                     Method m1 = ((E) a).getClass().getMethod(method, null);  
  22.                     Method m2 = ((E) b).getClass().getMethod(method, null);  
  23.                     if (sort != null && "desc".equals(sort))// 倒序  
  24.                         ret = m2.invoke(((E) b), null).toString()  
  25.                                 .compareTo(m1.invoke(((E) a), null).toString());  
  26.                     else  
  27.                         // 正序  
  28.                         ret = m1.invoke(((E) a), null).toString()  
  29.                                 .compareTo(m2.invoke(((E) b), null).toString());  
  30.                 } catch (NoSuchMethodException ne) {  
  31.                     System.out.println(ne);  
  32.                 } catch (IllegalAccessException ie) {  
  33.                     System.out.println(ie);  
  34.                 } catch (InvocationTargetException it) {  
  35.                     System.out.println(it);  
  36.                 }  
  37.                 return ret;  
  38.             }  
  39.         });  
  40.     }  
  41. }  

 

另外一种排序方式

实例:

Java代码   收藏代码
  1. List<CommonDictionary>list= DictionaryParam.getList("ptype");  
  2.               
  3.         Collections.sort(list,new SystemHWUtil. ListComparator(true,"value"));  
  4.         model.addAttribute("commonDictionaries", list);  

 说明:list的类型是ArrayList;

按照list中的元素(CommonDictionary对象)的成员变量value进行排序

SystemHWUtil. ListComparator的源代码:

Java代码   收藏代码
  1. public static class ListComparator implements Comparator{  
  2.         /*** 
  3.          * 是否转化为Int之后再比较 
  4.          */  
  5.         private boolean isConvertInteger;  
  6.         /*** 
  7.          * 对哪个列进行排序 
  8.          */  
  9.         private String comparedProperty;  
  10.         public ListComparator(boolean isConvertInteger,String comparedProperty) {  
  11.             super();  
  12.             this.isConvertInteger = isConvertInteger;  
  13.             this.comparedProperty=comparedProperty;  
  14.         }  
  15.         public int compare(Object o1, Object o2) {  
  16.             if(null!=o1&&null!=o2)  
  17.             {  
  18.                 try {  
  19.                     Object obj1=ReflectHWUtils.getObjectValue(o1, comparedProperty);  
  20.                     Object obj2=ReflectHWUtils.getObjectValue(o2, comparedProperty);  
  21.                     if(isConvertInteger){  
  22.                         int num1;  
  23.                         int num2;  
  24.                         if(obj1 instanceof Integer){  
  25.                             num1=(Integer)obj1;  
  26.                             num2=(Integer)obj2;  
  27.                         }else{  
  28.                             num1=Integer.parseInt(obj1.toString());  
  29.                             num2=Integer.parseInt(obj2.toString());  
  30.                         }  
  31.                         if(num1>num2){  
  32.                             return 1;  
  33.                         }else if(num1<num2){  
  34.                             return -1;  
  35.                         }else{  
  36.                             return 0;  
  37.                         }  
  38.                     }else{  
  39.                         return obj1.toString().compareTo(obj2.toString());  
  40.                     }  
  41.                 } catch (SecurityException e) {  
  42.                     e.printStackTrace();  
  43.                 } catch (NoSuchFieldException e) {  
  44.                     e.printStackTrace();  
  45.                 } catch (IllegalArgumentException e) {  
  46.                     e.printStackTrace();  
  47.                 } catch (IllegalAccessException e) {  
  48.                     e.printStackTrace();  
  49.                 }  
  50.             }  
  51.             return 0/*等于*/;  
  52.         }  
  53.     }  

 

附录:

Java代码   收藏代码
  1. public static class ArrayListComparator implements Comparator{  
  2.         /*** 
  3.          * 排序的依据 
  4.          */  
  5.         private String titles[];  
  6.         /*** 
  7.          * 对哪个列进行排序 
  8.          */  
  9.         private String comparedProperty;  
  10.           
  11.         public ArrayListComparator(String[] titles,String comparedProperty) {  
  12.             super();  
  13.             this.titles = titles;  
  14.             this.comparedProperty=comparedProperty;  
  15.         }  
  16.   
  17.         public int compare(Object o1, Object o2) {  
  18.             if(null!=o1&&null!=o2)  
  19.             {  
  20.                   
  21.                 try {  
  22.                     if(SystemHWUtil.indexOfArr(titles,(String)ReflectHWUtils.getObjectValue(o1, comparedProperty)   ) >  
  23.                     SystemHWUtil.indexOfArr(titles,(String)ReflectHWUtils.getObjectValue(o2, comparedProperty))){  
  24.                         return 1/*大于*/;  
  25.                     }else {  
  26.                         return -1/*小于*/;  
  27.                     }  
  28.                 } catch (SecurityException e) {  
  29.                     e.printStackTrace();  
  30.                 } catch (NoSuchFieldException e) {  
  31.                     e.printStackTrace();  
  32.                 } catch (IllegalArgumentException e) {  
  33.                     e.printStackTrace();  
  34.                 } catch (IllegalAccessException e) {  
  35.                     e.printStackTrace();  
  36.                 }  
  37.             }  
  38.             return 0/*等于*/;  
  39.         }  
  40.           
  41.     }  

 

相关文章:

  • Python 进行 URL 跳转
  • 安卓使用Root权限实现后台模拟全局按键、触屏事件方法(类似按键精灵)
  • 第13期 DApp 榜单 :来,吃我这波安利
  • java swing启动时窗口最大化
  • 一行代码迁移TensorFlow 1.x到TensorFlow 2.0
  • Oracle 12c 数据库中scott用户不存在的解决方法
  • redis使用场景和java测试案例
  • 数据库迁移
  • 无监督学习新突破!华为美研所提出自动编码变换网络AET
  • YII AssetManager分析 最小化脚本文件
  • 迅速搭建简易静态服务器
  • 在CMD窗口中使用javac和java命令进行编译和执行带有包名的具有继承关系的类
  • 4.56MariaDB密码重置4.57MariaDB慢查询日志
  • 第一次作业(2)
  • 基于遗传算法的优化问题求解
  • 2017 年终总结 —— 在路上
  •  D - 粉碎叛乱F - 其他起义
  • hadoop集群管理系统搭建规划说明
  • javascript 总结(常用工具类的封装)
  • JS实现简单的MVC模式开发小游戏
  • Laravel 中的一个后期静态绑定
  • OSS Web直传 (文件图片)
  • spring boot 整合mybatis 无法输出sql的问题
  • vue自定义指令实现v-tap插件
  • 从零开始的webpack生活-0x009:FilesLoader装载文件
  • 大快搜索数据爬虫技术实例安装教学篇
  • 技术发展面试
  • 巧用 TypeScript (一)
  • 如何进阶一名有竞争力的程序员?
  • 设计模式(12)迭代器模式(讲解+应用)
  • 视频flv转mp4最快的几种方法(就是不用格式工厂)
  • 在Mac OS X上安装 Ruby运行环境
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • ​如何在iOS手机上查看应用日志
  • #stm32驱动外设模块总结w5500模块
  • %@ page import=%的用法
  • (3)STL算法之搜索
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (Redis使用系列) SpringBoot 中对应2.0.x版本的Redis配置 一
  • (附源码)spring boot智能服药提醒app 毕业设计 102151
  • (黑马C++)L06 重载与继承
  • (七)Knockout 创建自定义绑定
  • (四)Linux Shell编程——输入输出重定向
  • (一) springboot详细介绍
  • (转)linux 命令大全
  • *** 2003
  • .babyk勒索病毒解析:恶意更新如何威胁您的数据安全
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • @AliasFor注解
  • @JoinTable会自动删除关联表的数据
  • [ CTF ] WriteUp-2022年春秋杯网络安全联赛-冬季赛
  • [2009][note]构成理想导体超材料的有源THz欺骗表面等离子激元开关——
  • [C#基础知识]专题十三:全面解析对象集合初始化器、匿名类型和隐式类型