1,实际应用:
List<OrderInfoBean> orderInfoBeans = commitOrderDto.getValue(); SortList<OrderInfoBean> sortList = new SortList<OrderInfoBean>(); sortList.Sort(orderInfoBeans, "getCreateTime", "desc");
2,工具类sortList源码
package com.gov.util; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Collections; import java.util.Comparator; import java.util.List; /*** * 用户排序 * @author huangwei * 2015年7月1日 * @param <E> */ public class SortList<E> { public void Sort(List<E> list, final String method, final String sort) { Collections.sort(list, new Comparator() { public int compare(Object a, Object b) { int ret = 0; try { Method m1 = ((E) a).getClass().getMethod(method, null); Method m2 = ((E) b).getClass().getMethod(method, null); if (sort != null && "desc".equals(sort))// 倒序 ret = m2.invoke(((E) b), null).toString() .compareTo(m1.invoke(((E) a), null).toString()); else // 正序 ret = m1.invoke(((E) a), null).toString() .compareTo(m2.invoke(((E) b), null).toString()); } catch (NoSuchMethodException ne) { System.out.println(ne); } catch (IllegalAccessException ie) { System.out.println(ie); } catch (InvocationTargetException it) { System.out.println(it); } return ret; } }); } }
另外一种排序方式
实例:
List<CommonDictionary>list= DictionaryParam.getList("ptype"); Collections.sort(list,new SystemHWUtil. ListComparator(true,"value")); model.addAttribute("commonDictionaries", list);
说明:list的类型是ArrayList;
按照list中的元素(CommonDictionary对象)的成员变量value进行排序
SystemHWUtil. ListComparator的源代码:
public static class ListComparator implements Comparator{ /*** * 是否转化为Int之后再比较 */ private boolean isConvertInteger; /*** * 对哪个列进行排序 */ private String comparedProperty; public ListComparator(boolean isConvertInteger,String comparedProperty) { super(); this.isConvertInteger = isConvertInteger; this.comparedProperty=comparedProperty; } public int compare(Object o1, Object o2) { if(null!=o1&&null!=o2) { try { Object obj1=ReflectHWUtils.getObjectValue(o1, comparedProperty); Object obj2=ReflectHWUtils.getObjectValue(o2, comparedProperty); if(isConvertInteger){ int num1; int num2; if(obj1 instanceof Integer){ num1=(Integer)obj1; num2=(Integer)obj2; }else{ num1=Integer.parseInt(obj1.toString()); num2=Integer.parseInt(obj2.toString()); } if(num1>num2){ return 1; }else if(num1<num2){ return -1; }else{ return 0; } }else{ return obj1.toString().compareTo(obj2.toString()); } } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return 0/*等于*/; } }
附录:
public static class ArrayListComparator implements Comparator{ /*** * 排序的依据 */ private String titles[]; /*** * 对哪个列进行排序 */ private String comparedProperty; public ArrayListComparator(String[] titles,String comparedProperty) { super(); this.titles = titles; this.comparedProperty=comparedProperty; } public int compare(Object o1, Object o2) { if(null!=o1&&null!=o2) { try { if(SystemHWUtil.indexOfArr(titles,(String)ReflectHWUtils.getObjectValue(o1, comparedProperty) ) > SystemHWUtil.indexOfArr(titles,(String)ReflectHWUtils.getObjectValue(o2, comparedProperty))){ return 1/*大于*/; }else { return -1/*小于*/; } } catch (SecurityException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return 0/*等于*/; } }
相关推荐
在开发中,我们可能会遇到,我们会根据不同情况对一个List集合进行排序操作,为了方便List集合根据对象中的某一个属性进行排序,开发了此工具类:
JAVA SortList 通用排序类 从网上搜到一个java 对 List 排序的工具,自己改了下 支持 整数 和 浮点数 比较后排序,浮点数小数部分的有点问题,期待大牛帮忙优化。
根据官网和网上分享的代码自己整理了一个阿里云OSS工具类,自动创建标准公开权限的存储空间,支持上传图片,音频,视频,PDF各种文件,批量上传,上传后支持在线预览,文件路径处理,浏览器文件下载(支持源文件中文...
8.利用反射机制进行排序工具类,支持数组、List、Set、Map的排序,可以支持多属性排序,支持子对象中的属性排序(例user对象中的role的name属性进行排序,method="role.name") 9.JVM参数获取工具 10.Java对象比较、...
在Java开发类库中,提供了很多工具类,我们即将学习最常见的工具类,比如对日期的操作,对集合的操作等。具体更多的工具类,请参考JavaDoc文档。 2. java.util.Date类 Date类包装了毫秒值,毫秒值表示自1970年1月1...
mybatis basedao 是一款封装了基本增删改查的 简化开发操作
MapSortUtils map排序工具类 CollectionUtils集合操作 DocumentUtils文档操作 RegexUtils正则操作 StringUtils字符串操作 RandomUtils随机操作 ConvertDateUtils转换日期工具类 IdcardUtils身份证识别工具类 ...
拥有从Request里面拿实体属性值的工具类 具有实现了数字分页工具栏的分页的功能 可以通过多种方式分页 1,普通的上一页,下一页 2,下拉框 3,比较复杂的数字分页工具栏的分页 通用Hibernate Dao 最后真心话! ...
拥有从Request里面拿实体属性值的工具类 具有实现了数字分页工具栏的分页的功能 可以通过多种方式分页 1,普通的上一页,下一页 2,下拉框 3,比较复杂的数字分页工具栏的分页 通用Hibernate Dao 最后真心话! ...
StringUtils.java:字符串工具类,用于生成指定格式的字符串及对字符串进行各种处理 使用方式 实体类继承 BaseEntity 并使用注解 @TableAttribute(name = "user_info",comment = "用户信息表") public class ...
容器是Java编程的一大利器,常用的类是:...Collections类 提供容器的一些通用工具,比如排序。而说到排序,就牵扯出了比较器:Comparator。能够熟练使用Comparator类,可以让你为自己的需求和自己的类定制排序方案。
Visual C++通用范例开发金典(附光盘)/开发专家 【作者】: 韦朴 陈泰生 【出版日期】:2008-06 【出版社】:电子工业出版社 【所属分类】: 图书 > 工业技术 【所属分类】: 图书 > 计算机与网络 > 程序语言与...
boot模块boot-parent项目依赖管理boot-dependenciesboot模块管理,其他项目可以导入pom使用boot-annotation常用的自定义注解,比如@Id,@Table等boot-util常用工具类,比如集合工具,Jackson工具类,日期工具类等boot...
7.2.7 查询的排序 7.2.8 连接查询 7.2.9 子查询技术 7.2.10 合并查询 7.2.11 控件查询技术 7.3 数据的删除与更新 7.3.1 数据删除 7.3.2 数据更新 7.4 本章小结 第8章 网络、通信技术程序设计 ...
Visual C++通用范例开发金典(附光盘)/开发专家 (分卷二/共三卷) 【作者】: 韦朴 陈泰生 【出版日期】:2008-06 【出版社】:电子工业出版社 【所属分类】: 图书 > 工业技术 【所属分类】: 图书 > 计算机与...
MIP2000XP是一套运行在Win9X/ME/NT/2K/XP上的通用数据库管理平台,她以数据为处理中心,实现在统一平台下对关系型数据库的数据进行全面管理。面向管理人员设计、无须编程的特点,是中小企事业单位信息化建设的一个...
人才招聘、常见问题、关于我们通用页面模板 √ 侧边栏: 文章页侧边栏、页面侧边栏 √ 友情链接功能: 网站底部友情链接功能,可设置只在首页显示或全站显示友链 √ 客服功能: 两种在线客服样式,可在后台...
2、产品支持大类、小类多级分类,分类可自由排序; 3、添加产品自动生成静态网页HTML,并可自定义静态文件名; 4、产品支持主图和多张角度图的上传,详细简介更是传图数量不限; 5、产品上传图片自动生成缩略图,...
本工具用ARX+LISP编程,用于解决当前 AutoCAD 绘图中的一些不足或不便,提高绘图的效率,并将日常积累的一些程序整理成集,以方便使用。主要功能有:选择集管理、快速选择、各种刷子、批量修改块属性、断线、表格与...
Java是一种广泛使用的面向对象的编程语言,由Sun ...综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的角色,是现代软件开发不可或缺的重要工具之一。