`
zhangjim
  • 浏览: 51459 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

List按指定字段排序

 
阅读更多

项目中经常有对List按某个字段进行排序,这里写了个通用的方法,仅供参考:

public class SortList<T> {
	/**
	 * @param targetList 目标排序List
	 * @param sortField 排序字段
	 * @param sortMode 排序方式
	 */
	@SuppressWarnings({ "unchecked", "rawtypes" })
	public void sort(List<T> targetList, final String sortField, final String sortMode) {
		Collections.sort(targetList, new Comparator() {
			public int compare(Object obj1, Object obj2) { 
				int retVal = 0;
				try {
					Method method1 = ((T)obj1).getClass().getMethod(sortField, null);
					Method method2 = ((T)obj2).getClass().getMethod(sortField, null);
					if (sortMode != null && "desc".equals(sortMode)) {
						retVal = method2.invoke(((T) obj2), null).toString().compareTo(method1.invoke(((T) obj1), null).toString()); // 倒序
					} else {
						retVal = method1.invoke(((T) obj1), null).toString().compareTo(method2.invoke(((T) obj2), null).toString()); // 正序
					}
				} catch (Exception e) {
					throw new RuntimeException();
				}
				return retVal;
			}
		});
	}
	
	/**
	 * 测试方法
	 * @param args
	 */
	public static void main(String[] args) {
		List<Person> targetList = new ArrayList<Person>();
		targetList.add(new Person("zhangsan",11));
		targetList.add(new Person("lisi",12));
		targetList.add(new Person("wangwu",13));
		System.out.println("排序前: " + targetList);
		
		SortList<Person> sortList = new SortList<Person>();
		sortList.sort(targetList, "getAge", "desc");
		
		System.out.println("排序后:" +targetList);
	}
}

class Person {
	private String name;
	private int age;

	public Person() {

	}

	public Person(String name, int age) {
		this.name = name;
		this.age = age;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getAge() {
		return age;
	}

	public void setAge(int age) {
		this.age = age;
	}
	
	public String toString(){
		return "name: " + this.name + ",age: " + this.age;
	}
}

 

0
0
分享到:
评论

相关推荐

    C# List OrderBy 动态多字段排序

    C# 使用orderby 多字段 动态排序

    List对象去重和按照某个字段排序的实现方法

    下面小编就为大家带来一篇List对象去重和按照某个字段排序的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    JAVA LIST排序

    主要为LIST对象中的指定字段排序 首先比较年龄,如果年龄相同,则比较名字

    java8新特性将List中按指定属性排序过滤重复数据的方法

    主要介绍了java8新特性将List中按指定属性排序过滤重复数据的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下

    Java按照List内存储的对象的某个字段进行排序的实例

    下面小编就为大家带来一篇Java按照List内存储的对象的某个字段进行排序的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    如何实现java8 list按照元素的某个字段去重

    主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下

    kellerMapper.jar

    SortAttribute.java:排序注解,标示成员变量为排序字段 TableAttribute.java:数据表注解,标示实体类对应的表名称、说明信息 provider:Sql 语句生成相关 BaseCreateProvider.java:数据表创建语句的生成器,...

    php-multi-sort:PHP与多数组排序

    multiSort类根据您指定的条件对数据重新排序。 sort_list选项 名称 排序:“ desc,asc” 类型:“数字,字符串,常规” 注意:这里的名称字段是索引值,将成为数组中的排序约束。 &lt;?php include "multi-...

    jdbc操作文档,数据库基本操作文档集合

    update 表名 set 字段名 = 字段值 where 要判断的字段名 = 要判断的字段值; 如果你要进行判断的字段值为null 要写 update 表名 set 字段名 = 字段值 where 要判断的字段名 is null; 4.删除记录 delete from 表名 ...

    多功能.NET代码自动生成器(含存储过程)

    根据指定条件查询数据集合,调用过程:先实例化一个CalendarNotesModel对象,然后设置筛选条件(即给相应属性字段赋值),然后调用此方法,可通过querytype参数设置筛选出的数据集的排序,如” UpdateTime DESC”,...

    多功能.NET代码自动生成器2.0版(2010年最新修改)

    根据指定条件查询数据集合,调用过程:先实例化一个CalendarNotesModel对象,然后设置筛选条件(即给相应属性字段赋值),然后调用此方法,可通过querytype参数设置筛选出的数据集的排序,如” UpdateTime DESC”,...

    java常用工具类的使用

    getDateTimeInstance (int,int, Locale) 返回指定地区、指定日期格式、指定时间格式的关于日期和时间的DateFormat对象。 表5 获取DateFormat对象的静态方法 调用DateFormat对象的format方法可以把Date对象转换成为...

    一个ViewGrid控件

    2、对多个字段进行复合排序;升序、降序的排序状态提示 使用方法(设置SmartSorting复合属性): AllowSortTip - 是否启用排序提示 AllowMultiSorting - 是否启用复合排序 SortAscImageUrl - 升序提示图片的URL...

    smartTable-2.2.0.zip

    android 表格 功能介绍 快速配置自动生成表格; 自动计算表格宽高; 表格列标题组合;...支持直接List或数组字段转列; 支持Json数据直接转换成表格; 支持表格网格指定行列显示; 支持自动生成表单。

    一款android自动生成表格框架smartTable-master.zip

    一款android自动生成表格框架: 快速配置自动生成表格; 自动计算表格宽高; 表格列标题组合;...支持直接List或数组字段转列; 支持Json数据直接转换成表格; 支持表格网格指定行列显示; 支持自动生成表单。

    Android代码-好用漂亮的Android表格框架,样式丰富。

    SmartTable android自动生成表格框架 English README 历史版本介绍 更多功能详情介绍 apk version 2.0版本...支持直接List或数组字段转列; 支持Json数据直接转换成表格; 支持表格网格指定行列显示; 支持自动生

    ResourceSpace资源管理程序 6.1.5219.zip

    •新的配置选项$ list_view_status_column允许显示和搜索结果列表视图通过归档状态排序 •新增选项,以显示原始的资源在搜索结果的相关资源 •选项用图标代替的搜索视图(X-LARGE,大,小,单)文字描述 •增加...

    gridview扩展

    控件使用 1、鼠标经过行的时候改变该行的样式,鼠标离开行的时候恢复该行的样式 使用方法(设置属性): MouseOverCssClass - 鼠标经过行时行的 CSS 类名 &lt;br&gt;2、对多个字段进行复合排序;升序、降序的...

    ResourceSpace资源管理程序 v6.1.5219.zip

    •新的配置选项$ list_view_status_column允许显示和搜索结果列表视图通过归档状态排序 •新增选项,以显示原始的资源在搜索结果的相关资源 •选项用图标代替的搜索视图(X-LARGE,大,小,单)文字描述 •增加...

Global site tag (gtag.js) - Google Analytics