项目中经常有对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; } }
相关推荐
C# 使用orderby 多字段 动态排序
下面小编就为大家带来一篇List对象去重和按照某个字段排序的实现方法。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要为LIST对象中的指定字段排序 首先比较年龄,如果年龄相同,则比较名字
主要介绍了java8新特性将List中按指定属性排序过滤重复数据的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
下面小编就为大家带来一篇Java按照List内存储的对象的某个字段进行排序的实例。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了如何实现java8 list按照元素的某个字段去重,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,,需要的朋友可以参考下
SortAttribute.java:排序注解,标示成员变量为排序字段 TableAttribute.java:数据表注解,标示实体类对应的表名称、说明信息 provider:Sql 语句生成相关 BaseCreateProvider.java:数据表创建语句的生成器,...
multiSort类根据您指定的条件对数据重新排序。 sort_list选项 名称 排序:“ desc,asc” 类型:“数字,字符串,常规” 注意:这里的名称字段是索引值,将成为数组中的排序约束。 <?php include "multi-...
update 表名 set 字段名 = 字段值 where 要判断的字段名 = 要判断的字段值; 如果你要进行判断的字段值为null 要写 update 表名 set 字段名 = 字段值 where 要判断的字段名 is null; 4.删除记录 delete from 表名 ...
根据指定条件查询数据集合,调用过程:先实例化一个CalendarNotesModel对象,然后设置筛选条件(即给相应属性字段赋值),然后调用此方法,可通过querytype参数设置筛选出的数据集的排序,如” UpdateTime DESC”,...
根据指定条件查询数据集合,调用过程:先实例化一个CalendarNotesModel对象,然后设置筛选条件(即给相应属性字段赋值),然后调用此方法,可通过querytype参数设置筛选出的数据集的排序,如” UpdateTime DESC”,...
getDateTimeInstance (int,int, Locale) 返回指定地区、指定日期格式、指定时间格式的关于日期和时间的DateFormat对象。 表5 获取DateFormat对象的静态方法 调用DateFormat对象的format方法可以把Date对象转换成为...
2、对多个字段进行复合排序;升序、降序的排序状态提示 使用方法(设置SmartSorting复合属性): AllowSortTip - 是否启用排序提示 AllowMultiSorting - 是否启用复合排序 SortAscImageUrl - 升序提示图片的URL...
android 表格 功能介绍 快速配置自动生成表格; 自动计算表格宽高; 表格列标题组合;...支持直接List或数组字段转列; 支持Json数据直接转换成表格; 支持表格网格指定行列显示; 支持自动生成表单。
一款android自动生成表格框架: 快速配置自动生成表格; 自动计算表格宽高; 表格列标题组合;...支持直接List或数组字段转列; 支持Json数据直接转换成表格; 支持表格网格指定行列显示; 支持自动生成表单。
SmartTable android自动生成表格框架 English README 历史版本介绍 更多功能详情介绍 apk version 2.0版本...支持直接List或数组字段转列; 支持Json数据直接转换成表格; 支持表格网格指定行列显示; 支持自动生
•新的配置选项$ list_view_status_column允许显示和搜索结果列表视图通过归档状态排序 •新增选项,以显示原始的资源在搜索结果的相关资源 •选项用图标代替的搜索视图(X-LARGE,大,小,单)文字描述 •增加...
控件使用 1、鼠标经过行的时候改变该行的样式,鼠标离开行的时候恢复该行的样式 使用方法(设置属性): MouseOverCssClass - 鼠标经过行时行的 CSS 类名 <br>2、对多个字段进行复合排序;升序、降序的...
•新的配置选项$ list_view_status_column允许显示和搜索结果列表视图通过归档状态排序 •新增选项,以显示原始的资源在搜索结果的相关资源 •选项用图标代替的搜索视图(X-LARGE,大,小,单)文字描述 •增加...