123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352 |
- package com.malk.utils;
- import cn.hutool.core.util.ObjectUtil;
- import com.malk.server.common.McException;
- import lombok.extern.slf4j.Slf4j;
- import org.apache.commons.collections4.map.HashedMap;
- import org.apache.commons.lang3.StringUtils;
- import java.util.*;
- @Slf4j
- public abstract class UtilMap {
- /************* 快速创建map ************/
- /**
- * 快速创建map [key, Objects]
- */
- public static Map<String, Object> map(String keys, Object... values) {
- String[] props = keys.split(", ");
- if (props.length != values.length) {
- McException.assertParamException_Null(keys);
- }
- Map<String, Object> map = new HashMap<>();
- Arrays.stream(values).forEach(UtilMc.consumerWithIndex((item, index) -> {
- map.put(props[index], item);
- }));
- return map;
- }
- /**
- * 快速创建map [key, Objects] todo, 添加枚举, 忽略空, 忽略0, 忽略""/null字符串 ...
- */
- public static Map<String, Object> mapNotNull(String keys, Object... values) {
- String[] props = keys.split(", ");
- if (props.length != values.length) {
- McException.assertParamException_Null(keys);
- }
- Map<String, Object> map = new HashMap<>();
- Arrays.stream(values).forEach(UtilMc.consumerWithIndex((item, index) -> {
- if (ObjectUtil.isNotNull(item) && UtilString.isNotBlankCompatNull(String.valueOf(item))) {
- map.put(props[index], item);
- }
- }));
- return map;
- }
- /**
- * 快速创建map [key, Strings]
- */
- public static Map<String, String> map(String keys, String values) {
- if (UtilString.isBlankCompatNull(keys) || UtilString.isBlankCompatNull(values)) {
- return UtilMap.empty();
- }
- String[] props = keys.split(", ");
- String[] contents = values.split(", ");
- if (props.length != contents.length) {
- McException.assertParamException_Null(keys);
- }
- Map<String, String> map = new HashMap<>();
- Arrays.stream(contents).forEach(UtilMc.consumerWithIndex((item, index) -> {
- map.put(props[index], String.valueOf(item));
- }));
- return map;
- }
- // todo 字段Equal, 添加首个参数判空
- /**
- * 快速创建map [保留skeys, 取值ckeys] todo: 新版本更新, 字段覆盖
- */
- public static Map<String, Object> map(String skeys, String ckeys, Map map) {
- String[] sprops = skeys.split(", ");
- String[] cprops = ckeys.split(", ");
- if (sprops.length != cprops.length) {
- McException.assertParamException_Null(skeys);
- }
- Map data = new HashMap();
- Arrays.stream(cprops).forEach(UtilMc.consumerWithIndex((item, index) -> {
- data.put(sprops[index], map.get(item));
- }));
- return data;
- }
- /**
- * 快速创建map [合并skeys, 取值ckeys]
- */
- public static void map(String skeys, String ckeys, Map sMap, Map cMap) {
- sMap.putAll(map(skeys, ckeys, cMap));
- }
- /// 创建空对象
- public static Map empty() {
- return new HashedMap();
- }
- /// 判定 & 创建空对象
- public static Map empty(Map data) {
- if (ObjectUtil.isNotNull(data)) {
- return data;
- }
- return new HashedMap();
- }
- /************* 赋值 ************/
- /**
- * 赋值 [为空对象null, 忽略]
- */
- public static Map putNotNull(Map data, String key, Object value) {
- if (ObjectUtil.isNull(data)) {
- data = new HashMap();
- }
- if (ObjectUtil.isNotNull(value)) {
- data.put(key, value);
- }
- return data;
- }
- /**
- * 赋值 [为空字符串, 忽略]
- */
- public static Map putNotEmpty(Map data, String key, String value) {
- if (ObjectUtil.isNull(data)) {
- data = new HashMap();
- }
- if (StringUtils.isNotBlank(value)) {
- data.put(key, value);
- }
- return data;
- }
- /**
- * 非空对象全量合并
- */
- public static Map putAll(Map data, Map value) {
- if (ObjectUtil.isNull(data)) {
- if (ObjectUtil.isNull(value)) {
- return empty();
- }
- return value;
- }
- if (ObjectUtil.isNotNull(value)) {
- data.putAll(value);
- }
- return data;
- }
- /**
- * 赋值 [值为0, 忽略]
- */
- public static Map putNotZero(Map data, String key, Object value) {
- float val = 0.f;
- try {
- val = Float.valueOf(String.valueOf(value));
- } catch (Exception e) {
- data.put(key, value);
- }
- if (val != 0.f) {
- data.put(key, value);
- }
- return data;
- }
- /**
- * 赋值 [原值为空赋值默认值]
- */
- public static Map put(Map data, String key, Object defaultValue) {
- if (ObjectUtil.isNull(data)) {
- data = empty(data);
- }
- Object value = data.get(key);
- if (ObjectUtil.isNull(value)) {
- value = defaultValue;
- }
- data.put(key, value);
- return data;
- }
- /**
- * 赋值 [赋值为空赋值默认值]
- */
- public static Map put(Map data, String key, Object value, Object defaultValue) {
- data = empty(data);
- if (ObjectUtil.isNull(value)) {
- value = defaultValue;
- }
- data.put(key, value);
- return data;
- }
- /************* 取值 ************/
- /**
- * 取值 [String.valueOf 避免空指针]
- */
- public static String getString(Map data, String key) {
- if (data.containsKey(key)) {
- // 不能判空字符串
- if (ObjectUtil.isNull(data.get(key))) {
- return "";
- }
- String value = String.valueOf(data.get(key));
- // 屏蔽空指针转换
- if (value.equals("null")) {
- return "";
- }
- return value;
- }
- return "";
- }
- /**
- * 取值 [转为 long]
- */
- public static long getLong(Map data, String key) {
- McException.assertParamException_Null(data, key);
- return Long.valueOf(getString(data, key)) + 0L;
- }
- /**
- * 取值 [转为 int]
- */
- public static int getInt(Map data, String key) {
- String txt = getString(data, key);
- if (StringUtils.isBlank(txt)) {
- return 0;
- }
- return Integer.valueOf(txt);
- }
- /**
- * 取值 [转为 float]
- */
- public static Float getFloat(Map data, String key) {
- String txt = getString(data, key);
- if (StringUtils.isBlank(txt)) {
- return 0f;
- }
- return Float.valueOf(txt);
- }
- public static Double getDouble(Map data, String key) {
- String txt = getString(data, key);
- if (StringUtils.isBlank(txt)) {
- return 0d;
- }
- return Double.valueOf(txt);
- }
- /**
- * 取值 [转为 bool]
- */
- public static Boolean getBoolean(Map data, String key) {
- return Boolean.valueOf(getString(data, key));
- }
- /**
- * 取值 [为空返回默认值]
- */
- public static Object get_default(Map data, String key, Object defaultValue) {
- Object value = data.get(key);
- if (ObjectUtil.isNull(value)) {
- return defaultValue;
- }
- return value;
- }
- /**
- * 取值 [为空返回默认字符串]
- */
- public static String getString_default(Map data, String key, String defaultValue) {
- String value = getString(data, key);
- if (StringUtils.isBlank(value)) {
- return defaultValue;
- }
- return value;
- }
- /**
- * 取值 [未定key, 取第一个命中]
- */
- public static Object get_first(Map data, String... keys) {
- Object value = null;
- for (String key : keys) {
- if (data.containsKey(key)) {
- value = data.get(key);
- break;
- }
- }
- return value;
- }
- /**
- * 取值 String [未定key, 取第一个命中]
- */
- public static String getString_first(Map data, String... keys) {
- String value = "";
- for (String key : keys) {
- // 字段 + 值判定
- if (data.containsKey(key) && StringUtils.isNotBlank(getString(data, key))) {
- value = UtilString.stringFormatNull(data, key);
- break;
- }
- }
- return value;
- }
- /**
- * 取值 List
- */
- public static List getList(Map data, String key) {
- if (data.containsKey(key)) {
- Object val = data.get(key);
- if (val instanceof List) {
- return (List) val;
- }
- }
- return new ArrayList();
- }
- /**
- * 取值 Map
- */
- public static Map getMap(Map data, String key) {
- if (data.containsKey(key)) {
- Object val = data.get(key);
- if (val instanceof Map) {
- return (Map) val;
- }
- return (Map) data.get(key);
- }
- return new HashedMap();
- }
- /************* 判定 ************/
- /**
- * 是否空字符串
- */
- public static boolean isBlankString(Map data, String key) {
- return StringUtils.isBlank(getString(data, key));
- }
- /**
- * 是否不为空字符串
- */
- public static boolean isNotBlankString(Map data, String key) {
- return StringUtils.isNotBlank(getString(data, key));
- }
- }
|