`

通用排序工具类

    博客分类:
  • Java
阅读更多

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/*等于*/;
		}
		
	}

 

 

 

 

3
2
分享到:

相关推荐

    List集合按照对象中某个属性排序通用工具类(按对象中某属性排序)

    在开发中,我们可能会遇到,我们会根据不同情况对一个List集合进行排序操作,为了方便List集合根据对象中的某一个属性进行排序,开发了此工具类:

    JAVA SortList 通用排序类

    JAVA SortList 通用排序类 从网上搜到一个java 对 List 排序的工具,自己改了下 支持 整数 和 浮点数 比较后排序,浮点数小数部分的有点问题,期待大牛帮忙优化。

    阿里云对象存储静态工具类(AliOSSUtils.java)快速上手!!!

    根据官网和网上分享的代码自己整理了一个阿里云OSS工具类,自动创建标准公开权限的存储空间,支持上传图片,音频,视频,PDF各种文件,批量上传,上传后支持在线预览,文件路径处理,浏览器文件下载(支持源文件中文...

    通用工具类

    8.利用反射机制进行排序工具类,支持数组、List、Set、Map的排序,可以支持多属性排序,支持子对象中的属性排序(例user对象中的role的name属性进行排序,method="role.name") 9.JVM参数获取工具 10.Java对象比较、...

    java常用工具类的使用

    在Java开发类库中,提供了很多工具类,我们即将学习最常见的工具类,比如对日期的操作,对集合的操作等。具体更多的工具类,请参考JavaDoc文档。 2. java.util.Date类 Date类包装了毫秒值,毫秒值表示自1970年1月1...

    mybatis basedao

    mybatis basedao 是一款封装了基本增删改查的 简化开发操作

    commonutils:Java实用程序

    MapSortUtils map排序工具类 CollectionUtils集合操作 DocumentUtils文档操作 RegexUtils正则操作 StringUtils字符串操作 RandomUtils随机操作 ConvertDateUtils转换日期工具类 IdcardUtils身份证识别工具类 ...

    (sjie)山寨版通用分页

    拥有从Request里面拿实体属性值的工具类 具有实现了数字分页工具栏的分页的功能 可以通过多种方式分页 1,普通的上一页,下一页 2,下拉框 3,比较复杂的数字分页工具栏的分页 通用Hibernate Dao 最后真心话! ...

    Struts+Hibernate+Sprign 通用分页

    拥有从Request里面拿实体属性值的工具类 具有实现了数字分页工具栏的分页的功能 可以通过多种方式分页 1,普通的上一页,下一页 2,下拉框 3,比较复杂的数字分页工具栏的分页 通用Hibernate Dao 最后真心话! ...

    kellerMapper.jar

    StringUtils.java:字符串工具类,用于生成指定格式的字符串及对字符串进行各种处理 使用方式 实体类继承 BaseEntity 并使用注解 @TableAttribute(name = "user_info",comment = "用户信息表") public class ...

    Java学习过程中应该理解的一些重点内容

    容器是Java编程的一大利器,常用的类是:...Collections类 提供容器的一些通用工具,比如排序。而说到排序,就牵扯出了比较器:Comparator。能够熟练使用Comparator类,可以让你为自己的需求和自己的类定制排序方案。

    Visual C++通用范例开发金典(第三卷/共三卷)

    Visual C++通用范例开发金典(附光盘)/开发专家 【作者】: 韦朴 陈泰生 【出版日期】:2008-06 【出版社】:电子工业出版社 【所属分类】: 图书 &gt; 工业技术 【所属分类】: 图书 &gt; 计算机与网络 &gt; 程序语言与...

    boot:常用的工具或者服务

    boot模块boot-parent项目依赖管理boot-dependenciesboot模块管理,其他项目可以导入pom使用boot-annotation常用的自定义注解,比如@Id,@Table等boot-util常用工具类,比如集合工具,Jackson工具类,日期工具类等boot...

    Visual C++通用范例开发金典(第一卷、共两卷)

     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++通用范例开发金典(分卷二/共三卷)

    Visual C++通用范例开发金典(附光盘)/开发专家 (分卷二/共三卷) 【作者】: 韦朴 陈泰生 【出版日期】:2008-06 【出版社】:电子工业出版社 【所属分类】: 图书 &gt; 工业技术 【所属分类】: 图书 &gt; 计算机与...

    MIP2000通用信息管理平台XP标准版

    MIP2000XP是一套运行在Win9X/ME/NT/2K/XP上的通用数据库管理平台,她以数据为处理中心,实现在统一平台下对关系型数据库的数据进行全面管理。面向管理人员设计、无须编程的特点,是中小企事业单位信息化建设的一个...

    WordPress企业主题:focus-start通用响应式强大模板

    人才招聘、常见问题、关于我们通用页面模板 √ 侧边栏: 文章页侧边栏、页面侧边栏 √ 友情链接功能: 网站底部友情链接功能,可设置只在首页显示或全站显示友链 √ 客服功能: 两种在线客服样式,可在后台...

    网新中英文企业手机电脑一体化建站通用版 v4.9.rar

    2、产品支持大类、小类多级分类,分类可自由排序; 3、添加产品自动生成静态网页HTML,并可自定义静态文件名; 4、产品支持主图和多张角度图的上传,详细简介更是传图数量不限; 5、产品上传图片自动生成缩略图,...

    tbTools 2020.05.05(AutoCAD工具箱).rar

    本工具用ARX+LISP编程,用于解决当前 AutoCAD 绘图中的一些不足或不便,提高绘图的效率,并将日常积累的一些程序整理成集,以方便使用。主要功能有:选择集管理、快速选择、各种刷子、批量修改块属性、断线、表格与...

    Java 排序算法知识点总结.zip

    Java是一种广泛使用的面向对象的编程语言,由Sun ...综上所述,Java凭借其强大的特性和广泛的适用范围,在企业级应用、互联网服务、移动开发等领域均扮演着举足轻重的角色,是现代软件开发不可或缺的重要工具之一。

Global site tag (gtag.js) - Google Analytics