`

List对象排序

 
阅读更多

参照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对象排序通用方法

    List 对象排序 Demo

    本篇将通过一个名为"List对象排序Demo"的主题,深入探讨如何对Python中的`List`对象进行排序,以及相关的一些源码分析和实用工具。 首先,Python的`List`对象提供两种主要的排序方式:`sort()`方法和`sorted()`函数...

    java List中对象多属性排序及各属性排序设置

    本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和自定义比较器(Comparator)来完成的,对于复杂的数据排序需求具有很高的灵活性。...

    LIST对象排序通用方法HIBERNATE的SET排序.pdf

    LIST对象排序通用方法HIBERNATE的SET排序.pdf

    分析LIST对象排序通用方法HIBERNATE的SET排序.pdf

    分析LIST对象排序通用方法HIBERNATE的SET排序.pdf

    LIST对象排序通用方法HIBERNATE的SET排序[整理].pdf

    LIST对象排序通用方法HIBERNATE的SET排序[整理].pdf

    List 对象属性排序

    ### List对象属性排序知识点 #### 一、概述 在Java编程中,经常需要对`List`集合中的对象按照特定...通过以上介绍,可以看出该工具类能够有效地简化`List`集合中对象属性的排序过程,提高代码的可读性和可维护性。

    List对象排序通用方法[参考].pdf

    `List`对象排序通用方法就是为了解决这个问题,特别是在处理从数据库中检索出的数据列表时,避免频繁的数据库查询,转而在内存中对数据进行排序。这里我们将探讨如何对包含自定义对象的`List`进行通用排序,并减少...

    java实现List中对象排序的方法

    总结来说,Java中实现List中对象排序的关键在于使用`Collections.sort()`方法配合自定义的`Comparator`。这使得我们可以根据对象的任意属性进行排序,不仅限于基本类型,也包括复杂的数据结构。这种方法具有很高的...

    java中List对象排序通用方法

    但是,当List中的元素是自定义对象且需要按照对象的某个属性进行排序时,就需要自定义比较器Comparator。 描述中提到的问题在于,如果List包含的是对象而不是基本数据类型,那么直接使用`Collections.sort()`就不够...

    java中list排序

    在 Java 中,对 List 排序可以使用 Collections.sort(list) 方法,但是这种方法只能对基本类型的 List 进行排序,如果 List 中包含的是对象,那么这种方法就不行了。这时需要使用Comparator接口来实现排序。 ...

    List中保存对象,按对象中某一属性排序【含程序源码】

    这篇博客“List中保存对象,按对象中某一属性排序【含程序源码】”恰好提供了这样的解决方案。下面我们将深入探讨这个主题。 首先,让我们理解列表(List)和对象排序的基本概念。列表是Java集合框架的一部分,它允许...

    arraylist 对象 数组排序

    在Java编程语言中,ArrayList是...总的来说,对ArrayList中的对象进行排序涉及到Java集合框架的核心概念,包括List接口、Collections工具类以及Comparator接口。理解这些知识点对于编写高效、灵活的Java代码至关重要。

    java版本List中对象多属性排序.rar

    在这个“java版本List中对象多属性排序.rar”压缩包中,我们可能找到了一个关于如何在Java中实现此类排序的示例或教程。 首先,让我们理解基本概念。在Java中,`List`接口是`Collection`框架的一部分,它允许我们...

    java中List对象列表实现去重或取出及排序的方法

    Java中List对象列表实现去重或取出及排序的方法 在Java中,对List对象列表实现去重或取出及排序是一种常见的操作。下面将详细介绍相关的方法和实现。 1. 实体类重写equals和hashCode方法 在Java中,想要去重List...

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

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

Global site tag (gtag.js) - Google Analytics