隨筆-12  評論-6  文章-0  trackbacks-0
          /**
           * 
           
          */
          package com.infopatent.juangetljc.web.controller.util;

          import java.lang.reflect.Field;
          import java.text.Collator;
          import java.util.Collections;
          import java.util.Comparator;
          import java.util.List;
          import java.util.Locale;

          /**
           * 
          @author xue
           * 2014年9月24日
           
          */
          public class SortListByBeanPropertyUtil {

              
          //根據集合里的Bean擁有的屬性進行排序
              
              
          public static <T> void sort(List<T> list, final String sortProperty, final String sort) {
                  
                  
          if(list == null || sortProperty == null || "".equals(sortProperty) || list.isEmpty())
                      
          return;
                  
                  Collections.sort(list, 
          new Comparator<T>() {

                      @Override
                      
          public int compare(T t1, T t2) {
                          Object o1 
          = new Object();
                          Object o2 
          = new Object();
                          
          try {
                              o1 
          = SortListByBeanPropertyUtil.getFieldValue(t1, sortProperty);
                              o2 
          = SortListByBeanPropertyUtil.getFieldValue(t2, sortProperty);
                              
                          } 
          catch (Exception e) {
                              e.printStackTrace();
                          }
                          
          int result = 0;
                          
          if(o1 == null) {
                              result 
          = -1;
                          }
          else if(o2 == null) {
                              result 
          = 1;
                          }
          else if(o1 instanceof String) {
                              result 
          = Collator.getInstance(Locale.CHINESE).compare(o1, o2);
                          }
          else{
                              result 
          = ((Comparable)o1).compareTo(o2);
                          }
                          
                          
          //是否降序排序
                          if("desc".equalsIgnoreCase(sort)) {
                              result 
          = 0-result;
                          }
                          
                          
          return result;
                      }
                      
                  });
                  
              }
              
              
          //反射方法,反射出類型
              public static Object getFieldValue(Object obj, String fieldName) throws Exception {
                  
          //反射出對象類型
                  Class<?> cls = obj.getClass();
                  
          //反射出類型字段
                  Field field = cls.getDeclaredField(fieldName);
                  
          //獲取屬性是,壓制java對訪問修飾符的檢查
                  field.setAccessible(true);
                  
          //在對象obj上讀取field屬性的值
                  Object val = field.get(obj);
                  
          return val;
                  
              }
              
          }
          posted on 2014-09-24 16:25 小人物_Amor 閱讀(348) 評論(0)  編輯  收藏 所屬分類: java
          主站蜘蛛池模板: 开江县| 乌拉特中旗| 定安县| 阿鲁科尔沁旗| 怀仁县| 连州市| 通海县| 长子县| 郸城县| 三穗县| 宁强县| 会泽县| 南投县| 波密县| 龙山县| 许昌市| 高安市| 新田县| 长春市| 康平县| 内丘县| 阳谷县| 无为县| 博客| 鹤山市| 连江县| 巩留县| 进贤县| 岗巴县| 佳木斯市| 交口县| 内江市| 驻马店市| 富平县| 新宾| 依安县| 长宁区| 浦江县| 屏南县| 五大连池市| 汤阴县|