常用的工具类方法

比较新对象和旧对象里面的对应值-返回对应的字段名称

 /**
     调用:   strings = compareProperties(user, user1);
     * 比较新对象和旧对象里面的对应值
     * @param newObj 新對象
     * @param oldObj 就對象
     * @return 返回不同值的属性名称 例如:{name, id, sex}
     */
    public static List<String> compareProperties(Object newObj, Object oldObj) {
        try {
            //判断是不是为空的
            if (newObj == null && oldObj == null) {
                return null;
            } else {
                //判断一下类型是不是保持一致的--也就是是不是对象是不是一致的
                Class<?> newObjClass = newObj.getClass();
                Class<?> oldObjClass = oldObj.getClass();
                if (newObjClass != oldObjClass) {
                    return null;
                }
                //获取全部的字段
                Field[] newObjFields = newObjClass.getDeclaredFields();
                List<String> fields = new ArrayList<>();
                for (Field newObjField : newObjFields) {
                    PropertyDescriptor newPropertyDescriptor = new PropertyDescriptor(newObjField.getName(), newObjClass);//得到类中字段的属性描述
                    Method newReadMethod = newPropertyDescriptor.getReadMethod();//从属性描述中获取对应的get方法
                    Object invoke1 = newReadMethod.invoke(newObj);//通过get方法获取对应的属性里面的值
                    Object invoke2 = newReadMethod.invoke(oldObj);
                    //这里有可能还有其他的类型转换的问题,占时只做第一个BigDecimal类型的处理
                    if (invoke1 instanceof BigDecimal) {
                        if ((invoke1 != null) && (invoke2 != null)) {
                            if (!(((BigDecimal) invoke1).compareTo((BigDecimal) invoke2) == 0)) {
                                fields.add(newObjField.getName());
                            }
                        }
                    } else {
                        if ((invoke1 != null) && (invoke2 != null)) {
                            if (!invoke1.equals(invoke2)) {
                                fields.add(newObjField.getName());
                            }
                        }
                    }
                }
                return fields;
            }
        } catch (Exception e) {
            ExceptionUtil.getExceptionMessage(e);
        }
        return null;
    }

Java 8 Stream

list集合

    1. stream()           为集合获取串行流
    2. distinct()          为集合进行去重
    3. map()              映射每一个元素对应的 值
    4. filter()           过滤每一个值的条件
    5. sorted()            对于流进行排序  sorted(reverseOrder())相反的排序 sorted(Comparator.comparing(Student::getAge).reversed()) 自定义排序规则
    6. .collect(Collectors.toList())

版权声明:本文为weixin_52352342原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。