zoukankan      html  css  js  c++  java
  • java实现按对象某个字段排序,排序字段和规则自定义

    @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;
            }
        });
    }

  • 相关阅读:
    D
    C
    如何用最简单的方式解释依赖注入?依赖注入是如何实现解耦的?
    二维数组中的查找
    简单对称算法
    冒泡排序(数组排序)
    二分查找
    斐波那契数列
    顺序查找(数组里查找某个元素)
    二维数组排序算法函数
  • 原文地址:https://www.cnblogs.com/wangjing666/p/9773701.html
Copyright © 2011-2022 走看看