码迷,mamicode.com
首页 > 编程语言 > 详细

排序List集合

时间:2017-02-10 18:06:05      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:网上   object   compareto   方式   oid   raw   span   time   工具类   

这两天写代码过程中遇到一个需求,需要按照某个字段排序List集合,自己实现了一半,发现网上有个更好的版本,就采用了这个,记录下来。

使用这个工具类要注意一个就是 如果你按照age 字段排序,那么age字段值不能为空,如果值为空会报异常,那么解决这个办法就是将空值的赋值。

 

 1 import java.lang.reflect.Method;  
 2  
 3 import java.util.Collections;  
 4 import java.util.Comparator;  
 5 import java.util.List;  
 6   
 7 /**
 8  * 
 9  * @ClassName:  ListSortUtil   
10  * @Description:TODO(list集合排序 按照字段 升序或降序)   
11  * @author: yh
12  * @date:   2017年2月9日 下午4:05:36  
13  * 注意:要排序的字段值不能为空  
14  * @param <T>
15  */
16 public class ListSortUtil<T> {  
17     /** 
18      * @param targetList 目标排序List 
19      * @param sortField 排序字段(实体类属性名) 
20      * @param sortMode 排序方式(asc or  desc) 
21      */  
22     @SuppressWarnings({ "unchecked", "rawtypes" })  
23     public void sort(List<T> targetList, final String sortField, final String sortMode) {  
24       
25         Collections.sort(targetList, new Comparator() {  
26             public int compare(Object obj1, Object obj2) {   
27                 int retVal = 0;  
28                 try {  
29                       
30                     String newStr=sortField.substring(0, 1).toUpperCase()+sortField.replaceFirst("\\w","");   
31                     String methodStr="get"+newStr;  
32                       
33                     Method method1 = ((T)obj1).getClass().getMethod(methodStr, null);  
34                     Method method2 = ((T)obj2).getClass().getMethod(methodStr, null);  
35                     if (sortMode != null && "desc".equals(sortMode)) {  
36                         retVal = method2.invoke(((T) obj2), null).toString().compareTo(method1.invoke(((T) obj1), null).toString());  // 倒序   
37                     } else {  
38                         retVal = method1.invoke(((T) obj1), null).toString().compareTo(method2.invoke(((T) obj2), null).toString());  // 正序  
39                     }  
40                 } catch (Exception e) {  
41                     throw new RuntimeException();  
42                 }  
43                 return retVal;  
44             }  
45         });  
46     }  
47       
48 } 

 

排序List集合

标签:网上   object   compareto   方式   oid   raw   span   time   工具类   

原文地址:http://www.cnblogs.com/yangh965/p/6387177.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!