`

通用排序工具类

    博客分类:
  • 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 排序的工具,自己改了下 支持 整数 和 浮点数 比较后排序,浮点数小数部分的有点问题,期待大牛帮忙优化。

    C# .Net通用工具类

    "C# .Net通用工具类"是一个集合了各种实用功能的代码库,它旨在简化常见的编程任务,提高开发效率。这个工具类集合可能是由开发者们在实际项目中提炼和优化的代码片段组成,便于其他开发者在自己的项目中直接引用和...

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

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

    通用工具类

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

    一些java常用的工具类

    在Java编程中,工具类(Utility Classes)是非常重要的组成部分,它们提供了许多通用的功能,以简化开发人员的工作。以下是对"一些java常用的工具类"的详细说明。 首先,工具类通常包含静态方法,这些方法不依赖于...

    es7.15.2版本全部封装工具类

    在Java开发中,工具类是常见的代码组织形式,它们封装了特定功能,便于代码复用和维护。这里我们关注的是一个名为"es7.15.2版本全部封装工具类"的Java工具集,它专注于 Elasticsearch(ES)的7.15.2版本操作。...

    uni-app一些工具类

    工具类(Utils)在任何开发项目中都扮演着至关重要的角色,它们通常包含了各种通用的功能和方法,以提高代码的复用性和可维护性。在这个"uni-app一些工具类"的压缩包中,我们可以预见到包含了一些实用的辅助函数,...

    Java常用工具类大全,工作5年精心整理.zip

    "Java常用工具类大全,工作5年精心整理.zip"这个压缩包文件很可能包含了一位有经验的Java开发者在五年工作中积累的各种实用工具类,这些工具类能够极大地提高开发效率,简化代码编写。以下是对可能包含的知识点进行...

    javascript后台调用的工具类

    通过这个工具类,开发者可以更方便地在C#后台环境中利用JavaScript的强大功能,避免了重复编写通用逻辑,提高了开发效率。不过,使用前应仔细阅读文档或源代码,确保理解每个方法的作用和用法,以防止潜在的错误和...

    java编程通用工具类注释.rar

    "java编程通用工具类注释.rar"是一个压缩包,其中包含了一个名为"工具类注释.doc"的文档,很可能是对一系列通用Java工具类的详细注释和解释。这份文档对于理解和使用这些工具类非常有帮助,能够提升代码的可读性和...

    Utility基础类大全.zip_Q98_c#工具类_c#通用类_happenedm1i_untlity

    在C#编程中,"Utility基础类大全.zip_Q98_c#工具类_c#通用类_happenedm1i_untlity"这个压缩包很可能包含了一系列用于日常开发的实用工具类,这些类通常是为了提高代码复用性和简化开发过程而设计的。下面将详细介绍...

    JAVA对象以及数据的工具类

    在Java编程语言中,工具类(Utils)是包含各种实用方法的类,这些方法通常用于执行常见的任务,如类型转换、字符串操作、集合处理等。它们使得代码更加简洁且易于维护,因为它们提供了通用功能的封装,避免了重复...

    java操作工具类

    8. **泛型工具类**: 泛型工具类可以帮助开发者在不指定具体类型的容器上执行通用操作,如创建集合、判断类型、转换类型等。`GenericsUtils`可能是这类工具类的实例。 9. **反射工具类**: 反射是Java强大的特性之一...

    28个java常用的工具类源码

    2. **集合工具类**:如CollectionsUtils,提供了对List、Set、Map等集合的通用操作,如排序、去重、合并等,简化了集合操作。 3. **日期时间工具类**:如DateUtils,方便进行日期时间的转换、比较和格式化,使得...

    common-utils.zip web 通用工具类包

    《web通用工具类包——common-utils.zip详解》 在web开发中,有一款优秀的工具类库可以极大地提高我们的开发效率,这就是"common-utils.zip"。它是一个专为web应用程序设计的通用工具类包,集成了多种实用功能,...

    java utils 工具类

    - 非依赖性:为了保持工具类的通用性,尽量避免引入外部依赖,除非必要。 - 可测试性:设计良好的工具类应该易于单元测试。 2. **常用的JavaUtils工具类**: - `Apache Commons Lang`:提供了丰富的字符串处理、...

    个人整理的好用工具类

    总的来说,这个压缩包涵盖了Mybatis扩展、中文处理、消息队列和通用工具类等多个方面,都是在实际开发中非常实用的技术点。对于熟悉这些工具的开发者来说,可以极大地提高其工作效率和代码质量。在学习和使用这些...

    Java常用工具类集合

    在Java编程语言中,工具类集合是一系列实用的类,它们提供了各种通用功能,帮助开发者更高效地编写代码。这些工具类通常包含在Java的`java.util`以及其他相关的包中,如`java.text`,`javax.imageio`,`javax.xml`等...

    C#常用工具类代码集合Util(自己工作总结)

    在C#编程中,工具类(Utility Class)是一种常见的设计模式,它封装了一些常用的功能,以便在项目中方便地重复使用。"MJ.Util"、"MJ.Util.Extension"和"MJ.Util.Model"这三个文件名暗示了这个压缩包可能包含了C#中的...

Global site tag (gtag.js) - Google Analytics