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

java实现按对象某个字段排序,排序字段和规则自定义

时间:2018-10-11 18:44:29      阅读:511      评论:0      收藏:0      [点我收藏+]

标签:integer   case   tst   null   bst   nbsp   field   upload   匿名内部类   

@SuppressWarnings({ "unchecked", "rawtypes" })
private <T> void sort(List<T> targetList, final String sortField, final String sortMode) {
    Collections.sort(targetList, new Comparator() {
        //匿名内部类,重写compare方法
        @Override
        public int compare(Object obj1, Object obj2) {
                Class c = obj1.getClass();
                Integer result = 0;
                try {
                    Field field = c.getDeclaredField(sortField);
                    String classType = field.getType().getSimpleName();
                    Method method = null;
                    if (BIGDECIMAL.equals(classType)) {
                        method = c.getMethod("get" + sortField.substring(0, 1).toUpperCase() + sortField.substring(1), new Class[]{});
                        if (BizConstants.DESC.equalsIgnoreCase(sortMode)) {
                            result = ((BigDecimal) method.invoke(obj2)).compareTo((BigDecimal) method.invoke(obj1));
                        } else if (BizConstants.DESC.equalsIgnoreCase(sortMode)) {
                            result = ((BigDecimal) method.invoke(obj1)).compareTo((BigDecimal) method.invoke(obj2));
                        }
                    } else {
                        result = -100;
                        throw new RuntimeException("暂不支持其它类型字段排序,如有需要请自己添加.");
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            return result > 0 ? 1 : result < 0 ? -1 : 0;
        }
    });
}

 

技术分享图片

java实现按对象某个字段排序,排序字段和规则自定义

标签:integer   case   tst   null   bst   nbsp   field   upload   匿名内部类   

原文地址:https://www.cnblogs.com/wangjing666/p/9773701.html

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