zoukankan      html  css  js  c++  java
  • MyUtil

    
    package com.zkml.common.util;
    
    import com.google.common.collect.Lists;
    import com.google.common.collect.Maps;
    
    import java.math.BigDecimal;
    import java.util.*;
    
    /**
     * @Description : 自定义工具类(逐步完善)
     * @Author :Unknow
     * @Time :2018-04-20
     */
    public final class MyUtil {
    
        /**
         * 判断是否为空
         *
         * @param value
         * @return
         */
        public static boolean isBlank(Object value) {
            return isObjectBlank(value);
        }
    
        /**
         * 判断是否不为空
         *
         * @param value
         * @return
         */
        public static boolean isNotBlank(Object value) {
            return !isObjectBlank(value);
        }
    
        /**
         * 将list中的标示抽出来组装成map,方便数据组装  Map<Object,Object>
         *
         * @param list
         * @param id
         * @return
         */
        public static Map listToMap(List list, String id) {
            Map map = Maps.newHashMap();
            for (int i = 0; i < list.size(); i++) {
                Object object = list.get(i);
                Object value = ReflectUtil.getMethod(id, object);
                if (isNotBlank(value))
                    map.put(value, object);
            }
            return map;
        }
    
        /**
         * 将list中的标示抽出来组装成map,方便数据组装(有多个数据有相同标示,则组装成list)  Map<Object,List>
         *
         * @param list
         * @param id
         * @return
         */
        public static Map listToMapList(List list, String id) {
            Map<Object, List> map = Maps.newHashMap();
            for (int i = 0; i < list.size(); i++) {
                Object object = list.get(i);
                Object value = ReflectUtil.getMethod(id, object);
                if (isNotBlank(value)) {
                    List paramsList = null;
                    if (map.containsKey(value)) {
                        paramsList = map.get(value);
                    } else {
                        paramsList = Lists.newArrayList();
                    }
                    paramsList.add(object);
                    map.put(value, paramsList);
                }
            }
            return map;
        }
    
        /**
         * list对象里面抽调某一个属性单独组装成list
         *
         * @param list
         * @param fieldName
         * @return
         */
        public static List listByField(List list, String fieldName) {
            List result = Lists.newArrayList();
            for (int i = 0; i < list.size(); i++) {
                Object ob = list.get(i);
                Object value = ReflectUtil.getMethod(fieldName, ob);
                if (isNotBlank(value) && !result.contains(value))
                    result.add(value);
            }
            return result;
        }
    
        /**
         * 获取枚举中的name集合
         *
         * @param baseEnums
         * @return
         */
        public static List<String> getEnumNameList(Enum[] baseEnums) {
            List<String> list = Lists.newArrayList();
            for (Enum baseEnumTem : baseEnums) {
                list.add(ReflectUtil.getMethod("name", baseEnumTem).toString());
            }
            return list;
        }
    
        /**
         * 获取枚举中的value集合
         *
         * @param baseEnums
         * @return
         */
        public static List<String> getEnumValueList(Enum[] baseEnums) {
            List<String> list = Lists.newArrayList();
            for (Enum baseEnumTem : baseEnums) {
                list.add(ReflectUtil.getMethod("value", baseEnumTem).toString());
            }
            return list;
        }
    
        /**
         * 小数点后保留length位小数(默认是2位)
         *
         * @param digits null 或 数值
         * @param length 小数后保留位数 默认为2位
         * @return BigDecimal
         */
        public static BigDecimal translateDigits(Object digits, Integer length) {
            if (isBlank(digits)) {
                return new BigDecimal("0.00");
            }
            if (isBlank(length) || length < 0) {
                length = 2;
            }
            return new BigDecimal(digits.toString()).setScale(length, BigDecimal.ROUND_HALF_UP);
        }
    
        /**
         * BigDecimal数据智能切割成只包含有效数字,仅能处理小数点后2为数字
         * 例:1、传入0.00,处理后返回0 ;2、传入0.20则返回0.2;3、传入20则返回20
         *
         * @param digits null 或 数值
         * @return String 处理后的数字字符串
         */
        public static String cutSignificantDigits(BigDecimal digits) {
            if (isBlank(digits)) {
                return "0";
            }
            // 转换成字符串
            String digitsStr = digits.toString();
            if (!digitsStr.contains(".")) {
                return digitsStr;
            }
            // 切割成“.”前后字符串
            String[] digitsStrArray = digitsStr.split("\.");
            // 获取小数点后的数字尾部去O后剩余部分
            digitsStrArray[1] = endsWithNonzero(digitsStrArray[1]);
            if ("".equals(digitsStrArray[1])) {
                return digitsStrArray[0];
            }
            // 重组数字,不以0结尾
            return digitsStrArray[0] + "." + digitsStrArray[1];
        }
    
        /**
         * 判断数字是否大于0
         *
         * @param object
         * @return boolean true,不为空或者0
         */
        public static boolean isDigitsExceedZero(Object object) {
            //如果为空,则返回false
            if (MyUtil.isBlank(object)) {
                return false;
            }
            try {
                BigDecimal digits = new BigDecimal(object.toString());
                //如果比对大于0,返回true
                if (digits.compareTo(new BigDecimal(0)) > 0) {
                    return true;
                }
            } catch (RuntimeException r) {
                throw new RuntimeException("不合法的数字类型");
            }
            return false;
        }
    
        /**
         * 小数点后的数字,截取成绝对不以0结尾
         *
         * @param digitsStr 小数点后的数字
         * @return
         */
        private static String endsWithNonzero(String digitsStr) {
            if (digitsStr.length() == 1 && "0".equals(digitsStr)) {
                return "";
            }
            if ("0".equals(digitsStr.substring(digitsStr.length() - 1, digitsStr.length()))) {
                return endsWithNonzero(digitsStr.substring(0, digitsStr.length() - 1));
            }
            return digitsStr;
        }
    
        /**
         * 对象判空
         *
         * @param ob 对象
         * @return true=空 / false=非空
         */
        private static boolean isObjectBlank(Object ob) {
            if (ob == null) {
                return true;
            }
            if (ob instanceof Collection) {
                return ((Collection) ob).isEmpty();
            }
            if (ob instanceof Map) {
                return ((Map) ob).isEmpty();
            }
            if (ob.toString().trim().equals("") || ob.toString().trim().toLowerCase().equals("null")) {
                return true;
            }
            return false;
        }
    }
    
    
    
  • 相关阅读:
    Mathematica查看内部定义
    Mathematica绘制曲面交线方法
    Mathematica新特性Inactive, 求解复杂微分方程
    Mathematica修改默认字体
    Mac系统下lipo, ar, nm等工具的使用简介
    centos8 安装php7.2以及php-fpm
    mysql8.0创建用户只能访问某一个数据库
    CentOS 7 yum安装 RabbitMQ
    Linux服务器PHP+MYSQL环境配置优化提升网站运行效率
    PHP 7.1安装xhprof进行性能分析
  • 原文地址:https://www.cnblogs.com/fangh816/p/13295583.html
Copyright © 2011-2022 走看看