package com.xutil.data;import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import org.apache.commons.lang3.StringUtils;import java.math.BigDecimal;
import java.util.*;/*** @title 常用的对象工具类* @description 数据检查 , 转换 , 获取* @author Xingbz* @createDate 2018-11-16*/
public class XDataUtil {//============================== CHECK ==============================/** @title 校验一组对象中是否包含null , 如果任意一个为null则为true , 否则为false */public static boolean isAnyNull(final Object... objects) {if (null == objects || objects.length == 0) return false;for (final Object object : objects) {if (null == object) {return true;}}return false;}/** @title 校验一组对象是否全是null值 , 都为null时返回true , 有任意一个非null则返回false */public static boolean isAllNull(final Object... objects) {if (null == objects || objects.length == 0) return true;for (final Object object : objects) {if (null != object) {return false;}}return true;}/** @title 校验一组对象是否全是非null值 , 有任意一个null则返回false */public static boolean isNoneNull(final Object... objects) {return !isAnyNull(objects);}/** @title 判断集合是否为空 */public static boolean isEmpty(final List<?> list) {return null == list || list.isEmpty();}/** @title 判断集合是否非空*/public static boolean isNotEmpty(final List<?> list) {return !isEmpty(list);}/** @title 判断MAP是否为空 */public static boolean isEmpty(final Map<?, ?> map) {return null == map || map.isEmpty();}/** @title 判断MAP是否非空 */public static boolean isNotEmpty(final Map<?, ?> map) {return !isEmpty(map);}/** @title 判断一组字符串均没有空串 @see StringUtils#isAnyBlank(CharSequence...) */public static boolean strIsAnyBlank(String... strings) {return StringUtils.isAnyBlank(strings);}/** @title 判断一组字符串必须全是空串 @see StringUtils#isAllBlank(CharSequence...) */public static boolean strIsAllBlank(String... strings) {return StringUtils.isAllBlank(strings);}/** @title 查询param中是否包含str , 避免NPE */public static boolean contains(String param, String str) {return isNoneNull(param, str) && param.contains(str);}/** @title 判断一个对象是否 equals 集合中的某个对象 */public static <T> boolean equalsAny(T val, List<T> list) {if (null == val || isEmpty(list)) return false;for (T t : list) {if (Objects.equals(val, t)) {return true;}}return false;}/** @title 判断一个对象是否 equals 数组中的某个对象 */public static <T> boolean equalsAny(T val, T... list) {return equalsAny(val, Arrays.asList(list));}/** @title 判断一个对象是否与集合中的任意对象都不相同 */public static <T> boolean equalsNone(T val, List<T> list) {return !equalsAny(val, list);}/** @title 判断一个对象是否与数组中的任意对象都不相同 */public static <T> boolean equalsNone(T val, T... list) {return !equalsAny(val, list);}//============================== GET ==============================/** @title 获取集合中的第一个对象 */public static <T> T getFirstEntity(List<T> list) {return isNotEmpty(list) ? list.get(0) : null;}/** @title 获取集合中的第一个对象 , 并封装为Optional */public static <T> Optional<T> getFirstOptional(List<T> list) {return isNotEmpty(list) ? Optional.ofNullable(list.get(0)) : Optional.empty();}/** @title 从jsonObject中获取某种类型的集合 */public static <T> List<T> getHashValueByJson(JSONObject jsonObject, String hashKey, Class<T> t) {List<T> result = new ArrayList<>();if (null == jsonObject || jsonObject.isEmpty()) return result;JSONArray jsonArray = jsonObject.getJSONArray(hashKey);if (null == jsonArray || jsonArray.isEmpty()) {return result;}return jsonArray.toJavaList(t);}//============================== CREATE ==============================/** @title 创建只有一个元素的hashmap */public static <K, V> Map<K, V> createSingleMap(K key, V value) {Map<K, V> map = new HashMap<>(1);map.put(key, value);return map;}/** @title 创建只有一个元素的JSONObject */public static <V> JSONObject createSingleJson(String key, V value) {JSONObject jsonObject = new JSONObject();jsonObject.put(key, value);return jsonObject;}//============================== HANDLE ==============================/** @title list转GET请求时的字符串(以 ", " 隔开, 去掉中括号) */public static <T> String list2Param(List<T> list) {if (isEmpty(list)) return "";return list.toString().replace("[", "").replace("]", "").replace(" ", "");}/** @title 将多个list合并成一个list */@SafeVarargspublic static <T> List<T> addAllList(List<T>... lists) {List<T> result = new ArrayList<>();if (null == lists || lists.length == 0) return result;for (List<T> list : lists) {if (isNotEmpty(list)) {result.addAll(list);}}return result;}/*** @title 按需脱敏 , 可以指定前后明文保留位数* @param sourceStr 源字符串* @param prefix 起始保留明文位数* @param suffix 末尾保留位数* @author Xingbz*/public static String desensitization(String sourceStr, int prefix, int suffix) {if (StringUtils.isBlank(sourceStr) || prefix < 0 || suffix < 0 || sourceStr.length() <= prefix + suffix) {return sourceStr;}StringBuilder stars = new StringBuilder();for (int i = 0; i < sourceStr.length() - (prefix + suffix); i++) {stars.append("*");}return sourceStr.substring(0, prefix) + stars.toString() + sourceStr.substring(sourceStr.length() - suffix);}/*** @title 前缀保留N位明文脱敏* @author Xingbz*/public static String desensitizationPre(String sourceStr, int prefix) {return desensitization(sourceStr, prefix, 0);}/*** @title 后缀保留N位明文脱敏* @author Xingbz*/public static String desensitizationSuf(String sourceStr, int suffix) {return desensitization(sourceStr, 0, suffix);}/*** @title 字符串转BigDecimal , 字符串为空或不可转换返回null(避免其他地方直接转换时的异常)* @author Xingbz*/public static BigDecimal str2BigDecimal(String str) {if (StringUtils.isBlank(str)) return null;try {return new BigDecimal(str);} catch (NumberFormatException e) {return null;}}/*** @title 字符串转BigDecimal , 字符串为空返回null , 不可转换返回默认值0(避免其他地方直接转换时的异常)* @author Xingbz*/public static BigDecimal str2BigDecimalDefZero(String str) {if (StringUtils.isBlank(str)) return null;try {return new BigDecimal(str);} catch (NumberFormatException e) {return BigDecimal.ZERO;}}/*** @title BigDecimal转str , 为null返回0* @author Xingbz*/public static String bigDecimal2StrDefZero(BigDecimal bigdecimal) {return null == bigdecimal ? "0" : bigdecimal.toString();}
}

常用的对象处理工具类相关推荐

  1. 前端常用的 59 个工具类【持续更新】

    #前端常用的 59 个工具类[持续更新] 前言 前端开发有时会处理一部分后台返回的数据,或者根据数据判断做一些处理; 这个时候就非常有必要将一些常用的工具类封装起来; 本文根据常用的一些工具类封装了 ...

  2. Java 对象深拷贝工具类

    目录 1. 使用场景 1.1 场景一 1.2 场景二 2. Spring 中的对象拷贝 3. 本工具类中的对象拷贝 3.1 拷贝对象本身(单个) 3.2 拷贝对象本身(批量) 3.3 拷贝对象属性至其 ...

  3. java常用地图坐标系转换工具类,支持谷歌,腾讯,百度等主流的地理坐标转换

    package com.shen.springboot.redis.util;import java.util.ArrayList; import java.util.HashMap; import ...

  4. JUC 常用 4 大并发工具类

    欢迎关注方志朋的博客,回复"666"获面试宝典 什么是JUC? JUC就是java.util.concurrent包,这个包俗称JUC,里面都是解决并发问题的一些东西 该包的位置位 ...

  5. java 打印对象属性 工具类_关于java实现任意对象输出字符串的工具类ObjectUtils用户打印日志、接口调试及监控等...

    通过该对象工具类ObjectUtils(参考org.springframework.util.ObjectUtils)实现了类集.数组及基本数据类型转换及字符串输出,常用在日志输出打印.接口联调及对象 ...

  6. 自定义java对象转换工具类

    背景 项目中经常有VO.PO.DTO等之间转换,由于apache工具类中BeanUtils.copyProperties及Json序列化反序列化方式转换性能比较低(阿里巴巴规范检查有提示不建议采用). ...

  7. 常用的JSON转换工具类

    最近在写项目的时候,经常会有String转Object以及Object转Json字符串的需求,或者JSONArray转Lsit以及List转JSONArray的需求,所以抽时间封装一个常用Json工具 ...

  8. 常用的Java开发工具类

    前言 在java的庞大体系中,其实有很多不错的小工具,也就是我们平常说的:轮子. 如果在我们的日常工作当中,能够将这些轮子用户,再配合一下idea的快捷键,可以极大得提升我们的开发效率. 今天我决定把 ...

  9. Java常用的格式化Json工具类

    扩展:Java常用工具类汇总 文章目录 前置条件 一.数组格式json转成 `,`隔开的字符串 二.String转List<对象> 三.String转Map 四.未完待续~ 前置条件 导入 ...

最新文章

  1. 【深度学习】使用深度学习进行手语识别
  2. 直播 | CIKM 2021论文解读:基于广群的知识图谱表示学习统一模型框架
  3. UIScrollViewDelegate-代理API详解
  4. C++ 类的const成员函数
  5. ruoyi 多模块部署_大数据时代,独立部署的商城系统具有哪些优势?
  6. 老年人用什么方式存款最好?
  7. 微软云存储更换品牌 免费空间将翻番达到15GB
  8. 双十一大促淘宝主图设置优化方法
  9. Xshell 连接服务器失败的解决方法
  10. python实现支持向量机实例_一个简单的案例带你了解支持向量机算法(Python代码)...
  11. 搭建华为FusionCompute虚拟化平台(转载)
  12. 沸点大前端组正式成员面试小问题
  13. 怎么才能快速减去皮下脂肪?
  14. c语言 内部12位二进制整型数据 转换 十六进制 程序,C语言应用:将128位二进制数据转换为十六进制输出...
  15. 鸿蒙系统会给其它厂商用,中国通信知名观察家项立刚:鸿蒙系统多终端互通,势必会给其他硬件厂商带来压力...
  16. w ndows10玩游戏蓝屏,Windows 10 电脑玩穿越火线蓝屏原因及解决方法
  17. 一步步写嵌入式操作系统 arm相关知识
  18. 西瓜书课后题——第十一章(特征选择与稀疏学习)
  19. vi 方向键与退格键解决办法
  20. 视频质量和大小、分辨率200*200、码率kb/s、帧率FPS、带宽、码流、人数

热门文章

  1. MYSQL 学习笔记记录整理之三:子查询
  2. 分析深圳电信的新型HTTP劫持方式
  3. 2017.5.16AM
  4. simhash与Google的网页去重
  5. 【转】Git详解之四 服务器上的Git
  6. gridview使用经验
  7. 第三章:react 应用( 基于 react )
  8. LabelImg 影像標註工具使用教學,製作深度學習用的資料集
  9. 数据结构栈之火车出站小结
  10. idea安装sbt插件linux,【idea】kafkasbt+idea安装配置与测试