隨筆-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
          主站蜘蛛池模板: 西峡县| 宝清县| 丹阳市| 洛南县| 安康市| 县级市| 右玉县| 会理县| 连江县| 阳春市| 沾益县| 乾安县| 聊城市| 台东市| 沙河市| 东阳市| 和龙市| 龙井市| 岳西县| 黄浦区| 夏河县| 龙里县| 宁强县| 夏邑县| 建湖县| 中阳县| 班戈县| 广州市| 大石桥市| 社会| 台江县| 萝北县| 蒙山县| 晋城| 清丰县| 亚东县| 洛浦县| 浦县| 辉南县| 兰溪市| 铅山县|