`
thinkgem
  • 浏览: 585962 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

List排序类

    博客分类:
  • Java
阅读更多
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;

/**
 * 排序List  thinkgem@gmail.com
 * @param <E> 排序的对象
 */
public class SortList<E>{	
	
	public void sort(java.util.List<E> list, final String method, final String sort){
		Collections.sort(list, new Comparator<E>() {			
			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;
		    }
		 });
	}
	
	public static void main(String[] args)throws Exception{
		
		class UserInfo{
			private Integer id;
			private String name;
			private Date date;
			public UserInfo(Integer id, String name, Date date){
				this.id = id;
				this.name = name;
				this.date = date;
			}
			public Integer getId() {
				return id;
			}
			public void setId(Integer id) {
				this.id = id;
			}
			public String getName() {
				return name;
			}
			public void setName(String name) {
				this.name = name;
			}
			public Date getDate() {
				return date;
			}
			public String getDateFormatted() {
				return new SimpleDateFormat("yyyy-MM-dd").format(date);
			}
			public void setDate(Date date) {
				this.date = date;
			}
			@Override
			public String toString() {
				return id + ", " + name + ", " + getDateFormatted();
			}
		}
		
		List<UserInfo> list = new ArrayList<UserInfo>();
		
		SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");
		
		list.add(new UserInfo(3,"b",formater.parse("1980-12-01")));
		list.add(new UserInfo(1,"c",formater.parse("1980-10-01")));
		list.add(new UserInfo(2,"a",formater.parse("1973-10-01")));
					
		System.out.println("-------原来序列-------------------");
		for(UserInfo user : list){
			System.out.println(user.toString());
		}		
		
		//调用排序类
		SortList<UserInfo> sortList = new SortList<UserInfo>();
		
		System.out.println("--------按id排序------------------");
		sortList.sort(list, "getId", "desc");
		for(UserInfo user : list){
			System.out.println(user.toString());
		}
		
		System.out.println("---------按name排序-----------------");		
		sortList.sort(list, "getName", null);
		for(UserInfo user : list){
			System.out.println(user.toString());
		}
		
		System.out.println("---------按date排序-----------------");
		sortList.sort(list, "getDateFormatted", null);
		for(UserInfo user : list){
			System.out.println(user.toString());
		}
		
	}
}

 

分享到:
评论

相关推荐

    java List排序工具类

    java List排序工具类 使用示例: new OrderUtils().order(list, "name", OrderUtils.DESC); 相关实例代码: public static void main(String[] args) { List&lt;Person&gt; list = getData(); // 获取无序数据 new ...

    JAVA SortList 通用排序类

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

    c# List类排序方法

    ### c# List类排序方法 #### 一、初始工作与预备知识 在C#中,`List&lt;T&gt;`是一个非常常用的泛型集合类,它提供了动态数组的功能,可以存储任意数量的相同类型元素。当涉及到对List中的数据进行排序时,我们可以采用...

    ListCtrl控件排序类及演示程序

    这个“ListCtrl控件排序类及演示程序”是针对开发者的一个资源,它提供了一种方法来实现ListView控件中数据的动态排序功能,特别适用于那些需要频繁更新和排序列表的应用。 ListCtrl控件排序类是程序中一个关键的...

    Java将2个List集合合并到一个List里面并排序工具类

    Java将2个List集合合并到一个List里面并排序工具类 1、Java编程资源,定义了一个名为`ListMerger`的工具类,主要包含一个名为`mergeAndSortLists`的静态方法。此方法用于将两个已经根据时间顺序排列的List合并成一...

    java 使用Collections类对List的排序操作

    本文将深入探讨如何使用 `Collections` 类对 List 进行排序操作。 首先,让我们了解 `List` 排序的基本概念。在 Java 中,`List` 是接口,它继承了 `Collection` 接口,并添加了顺序相关的操作。常见的 `List` 实现...

    java中list排序

    在这个例子中,我们使用了 SortList 类来对 UserInfo 对象的 userId 字段进行排序。我们可以使用泛型来指定排序的字段,然后使用反射机制来动态地取得方法。 这种方法可以实现对 List 中的对象进行排序,而不需要写...

    java List 排序 Collections.sort

    当我们需要对List中的元素进行排序时,`Collections.sort()`方法就派上了用场。这个方法能够根据元素的自然顺序或者自定义的比较器进行排序。本文将深入探讨`Collections.sort()`的使用、原理以及如何自定义排序规则...

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

    在Java编程中,排序是常见的数据处理操作,特别是在处理集合数据结构时,如List。本文将深入探讨如何在Java的List中对包含多个属性的对象进行排序,并且支持动态设置每个属性的排序方式。这个功能的实现是通过泛型和...

    按照规则,对list排序

    * 对传入的list进行分组排序 * list里面数据格式 [01-01-开头.txt, 01-02-简介.jpg, 11-01-尾声.jpg, 11-03-空白.jpg, 11-04-空白2.jpg, 11-06-空白1.jpg, 11-02-答谢语.txt, 02-01-标题.jpg, 02-09-标题555.jpg, ...

    MFC实现ListControl排序

    本教程主要针对"ListControl排序"这一主题进行详细阐述,帮助开发者理解如何在MFC环境下实现ListControl的排序功能。 首先,`ListControlSort.aps`、`ListControlSort.clw`、`ListControlSortDlg.cpp`、`...

    List集合排序222222

    导入jar 包 调用 String[] arr1 = new String[1]; ... 参数1 排序的集合 参数2 排序的字段(与定义字段一致) 可多个 参数3 排序方式(asc desc) 暂时只支持String 和int的排序 可能有些BUG 敬请谅解

    实现了MFC list排序

    MFC List控件是MFC中的一个重要组件,它基于Windows API中的CListCtrl类,用于展示和管理列表数据。本篇文章将详细探讨如何实现MFC List控件的排序功能。 在MFC中,`CListCtrl` 类提供了对列表视图控件的操作接口。...

    C# List OrderBy 动态多字段排序

    在C#编程中,`List&lt;T&gt;` 是一个常用的集合类,用于存储同类型的元素序列。在处理这些数据时,我们经常需要对它们进行排序。`OrderBy` 方法是 LINQ(Language Integrated Query) 提供的一个非常方便的排序工具,它...

    List Control排序的程序,带排序的三角形

    `SortHeaderCtrl.cpp`则包含了`SortHeaderCtrl`类的定义,这个类可能负责响应用户的点击事件,更新`List Control`的排序状态。 `SortListCtrlTestDlg.cpp`和`.h`文件是对话框类的实现和声明,其中包含了`...

    C#对list列表进行随机排序的方法

    在C#编程中,列表(List)是一种常用的集合类,用于存储一组同类型的元素。当需要对列表中的元素进行随机排序时,可以采用多种方法。这里我们重点介绍一种基于`Random`类的方法,如标题和描述中所述。这种方法通过创建...

    VC中排序功能的list control

    “LIST排序”则明确指出了实现的关键功能是列表的排序。 综上所述,`VC中排序功能的list control`是一个自定义的`CListCtrl`类,它扩展了标准`List Control`的功能,允许用户通过点击列标题来对数据进行排序。实现...

    List对象排序通用方法

    List对象排序通用方法List对象排序通用方法List对象排序通用方法List对象排序通用方法

    List 对象属性排序

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

    list集合树状排序-java

    在Java编程中,"list集合树状排序"是一种常见的需求,特别是在处理前端展示的数据时,如使用jQuery的treetable插件。这个场景通常涉及到数据结构的组织和排序,以便前端能够按照树形结构正确地展示层级关系。下面将...

Global site tag (gtag.js) - Google Analytics