参照http://jardot.iteye.com/blog/762349
定义一个实体UserInfo
package com.test; import java.util.Date; public class UserInfo { Integer userId; String userName; Date birthDate; Integer age; public Integer getUserId() { return userId; } public void setUserId(int userId) { this.userId = userId; } public String getUserName() { return userName; } public void setUserName(String userName) { this.userName = userName; } public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public Integer getAge() { return age; } public void setAge(int age) { this.age = age; } public UserInfo(Integer id, String name, Date date, Integer age) { super(); this.userId = id; this.userName = name; this.birthDate = date; this.age = age; } @Override public String toString() { return "UserInfo [userId=" + userId + ", userName=" + userName + ", birthDate=" + birthDate + ", age=" + age + "]"; } }
通用类:SortList
package com.test; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import java.util.Collections; import java.util.Comparator; import java.util.List; 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; } }); } }
测试类:
package com.test; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; public class ListSort { public static void main(String[] args) throws Exception { List<UserInfo> list = new ArrayList<UserInfo>(); SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); formater.parse("1980-12-01"); list.add(new UserInfo(3, "b", formater.parse("1980-12-01"), 11)); list.add(new UserInfo(1, "c", formater.parse("1980-10-01"), 30)); list.add(new UserInfo(2, "a", formater.parse("1973-10-01"), 11)); System.out.println("-------原来序列-------------------"); for (UserInfo user : list) { System.out.println(user.toString()); } //调用排序通用类 SortList<UserInfo> sortList = new SortList<UserInfo>(); //按userId排序 sortList.Sort(list, "getUserId", "desc"); System.out.println("--------按userId倒序------------------"); for (UserInfo user : list) { System.out.println(user.toString()); } //按userName排序 sortList.Sort(list, "getUserName", null); System.out.println("---------按username排序-----------------"); for (UserInfo user : list) { System.out.println(user.toString()); } //按birthDate排序 sortList.Sort(list, "getBirthDate", null); System.out.println("---------按birthDate排序-----------------"); for (UserInfo user : list) { System.out.println(user.toString()); } //按birthDate排序 sortList.Sort(list, "getAge", null); System.out.println("---------按age排序-----------------"); for (UserInfo user : list) { System.out.println(user.toString()); } } }
相关推荐
List对象排序通用方法List对象排序通用方法List对象排序通用方法List对象排序通用方法
本篇将通过一个名为"List对象排序Demo"的主题,深入探讨如何对Python中的`List`对象进行排序,以及相关的一些源码分析和实用工具。 首先,Python的`List`对象提供两种主要的排序方式:`sort()`方法和`sorted()`函数...
本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和自定义比较器(Comparator)来完成的,对于复杂的数据排序需求具有很高的灵活性。...
LIST对象排序通用方法HIBERNATE的SET排序.pdf
分析LIST对象排序通用方法HIBERNATE的SET排序.pdf
LIST对象排序通用方法HIBERNATE的SET排序[整理].pdf
### List对象属性排序知识点 #### 一、概述 在Java编程中,经常需要对`List`集合中的对象按照特定...通过以上介绍,可以看出该工具类能够有效地简化`List`集合中对象属性的排序过程,提高代码的可读性和可维护性。
`List`对象排序通用方法就是为了解决这个问题,特别是在处理从数据库中检索出的数据列表时,避免频繁的数据库查询,转而在内存中对数据进行排序。这里我们将探讨如何对包含自定义对象的`List`进行通用排序,并减少...
总结来说,Java中实现List中对象排序的关键在于使用`Collections.sort()`方法配合自定义的`Comparator`。这使得我们可以根据对象的任意属性进行排序,不仅限于基本类型,也包括复杂的数据结构。这种方法具有很高的...
但是,当List中的元素是自定义对象且需要按照对象的某个属性进行排序时,就需要自定义比较器Comparator。 描述中提到的问题在于,如果List包含的是对象而不是基本数据类型,那么直接使用`Collections.sort()`就不够...
在 Java 中,对 List 排序可以使用 Collections.sort(list) 方法,但是这种方法只能对基本类型的 List 进行排序,如果 List 中包含的是对象,那么这种方法就不行了。这时需要使用Comparator接口来实现排序。 ...
这篇博客“List中保存对象,按对象中某一属性排序【含程序源码】”恰好提供了这样的解决方案。下面我们将深入探讨这个主题。 首先,让我们理解列表(List)和对象排序的基本概念。列表是Java集合框架的一部分,它允许...
在Java编程语言中,ArrayList是...总的来说,对ArrayList中的对象进行排序涉及到Java集合框架的核心概念,包括List接口、Collections工具类以及Comparator接口。理解这些知识点对于编写高效、灵活的Java代码至关重要。
在这个“java版本List中对象多属性排序.rar”压缩包中,我们可能找到了一个关于如何在Java中实现此类排序的示例或教程。 首先,让我们理解基本概念。在Java中,`List`接口是`Collection`框架的一部分,它允许我们...
Java中List对象列表实现去重或取出及排序的方法 在Java中,对List对象列表实现去重或取出及排序是一种常见的操作。下面将详细介绍相关的方法和实现。 1. 实体类重写equals和hashCode方法 在Java中,想要去重List...
在开发中,我们可能会遇到,我们会根据不同情况对一个List集合进行排序操作,为了方便List集合根据对象中的某一个属性进行排序,开发了此工具类: