浏览代码

add method

Looly 5 年之前
父节点
当前提交
6e4d897b46
共有 2 个文件被更改,包括 151 次插入3 次删除
  1. 1 0
      CHANGELOG.md
  2. 150 3
      hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java

+ 1 - 0
CHANGELOG.md

@@ -10,6 +10,7 @@
 * 【core   】     增加PhoneUtil(pr#990@Github)
 * 【core   】     改进Img,目标图片类型未定义使用源图片类型(issue#I1PB0B@Gitee)
 * 【json   】     JSONConfig增加Transient选项(issue#I1PLHN@Gitee)
+* 【core   】     MapUtil增加getXXX的默认值重载(issue#I1PTGI@Gitee)
 
 ### Bug修复
 

+ 150 - 3
hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java

@@ -526,7 +526,7 @@ public class MapUtil {
 	 * @since 5.0.4
 	 */
 	public static String sortJoin(Map<?, ?> params, String separator, String keyValueSeparator, boolean isIgnoreNull,
-	                              String... otherParams) {
+								  String... otherParams) {
 		return join(sort(params), separator, keyValueSeparator, isIgnoreNull, otherParams);
 	}
 
@@ -896,6 +896,19 @@ public class MapUtil {
 	}
 
 	/**
+	 * 获取Map指定key的值,并转换为字符串
+	 *
+	 * @param map          Map
+	 * @param key          键
+	 * @param defaultValue 默认值
+	 * @return 值
+	 * @since 5.3.11
+	 */
+	public static String getStr(Map<?, ?> map, Object key, String defaultValue) {
+		return get(map, key, String.class, defaultValue);
+	}
+
+	/**
 	 * 获取Map指定key的值,并转换为Integer
 	 *
 	 * @param map Map
@@ -908,6 +921,19 @@ public class MapUtil {
 	}
 
 	/**
+	 * 获取Map指定key的值,并转换为Integer
+	 *
+	 * @param map          Map
+	 * @param key          键
+	 * @param defaultValue 默认值
+	 * @return 值
+	 * @since 5.3.11
+	 */
+	public static Integer getInt(Map<?, ?> map, Object key, Integer defaultValue) {
+		return get(map, key, Integer.class, defaultValue);
+	}
+
+	/**
 	 * 获取Map指定key的值,并转换为Double
 	 *
 	 * @param map Map
@@ -920,6 +946,19 @@ public class MapUtil {
 	}
 
 	/**
+	 * 获取Map指定key的值,并转换为Double
+	 *
+	 * @param map          Map
+	 * @param key          键
+	 * @param defaultValue 默认值
+	 * @return 值
+	 * @since 5.3.11
+	 */
+	public static Double getDouble(Map<?, ?> map, Object key, Double defaultValue) {
+		return get(map, key, Double.class, defaultValue);
+	}
+
+	/**
 	 * 获取Map指定key的值,并转换为Float
 	 *
 	 * @param map Map
@@ -932,6 +971,19 @@ public class MapUtil {
 	}
 
 	/**
+	 * 获取Map指定key的值,并转换为Float
+	 *
+	 * @param map          Map
+	 * @param key          键
+	 * @param defaultValue 默认值
+	 * @return 值
+	 * @since 5.3.11
+	 */
+	public static Float getFloat(Map<?, ?> map, Object key, Float defaultValue) {
+		return get(map, key, Float.class, defaultValue);
+	}
+
+	/**
 	 * 获取Map指定key的值,并转换为Short
 	 *
 	 * @param map Map
@@ -944,6 +996,19 @@ public class MapUtil {
 	}
 
 	/**
+	 * 获取Map指定key的值,并转换为Short
+	 *
+	 * @param map          Map
+	 * @param key          键
+	 * @param defaultValue 默认值
+	 * @return 值
+	 * @since 5.3.11
+	 */
+	public static Short getShort(Map<?, ?> map, Object key, Short defaultValue) {
+		return get(map, key, Short.class, defaultValue);
+	}
+
+	/**
 	 * 获取Map指定key的值,并转换为Bool
 	 *
 	 * @param map Map
@@ -956,6 +1021,19 @@ public class MapUtil {
 	}
 
 	/**
+	 * 获取Map指定key的值,并转换为Bool
+	 *
+	 * @param map          Map
+	 * @param key          键
+	 * @param defaultValue 默认值
+	 * @return 值
+	 * @since 5.3.11
+	 */
+	public static Boolean getBool(Map<?, ?> map, Object key, Boolean defaultValue) {
+		return get(map, key, Boolean.class, defaultValue);
+	}
+
+	/**
 	 * 获取Map指定key的值,并转换为Character
 	 *
 	 * @param map Map
@@ -968,6 +1046,19 @@ public class MapUtil {
 	}
 
 	/**
+	 * 获取Map指定key的值,并转换为Character
+	 *
+	 * @param map          Map
+	 * @param key          键
+	 * @param defaultValue 默认值
+	 * @return 值
+	 * @since 5.3.11
+	 */
+	public static Character getChar(Map<?, ?> map, Object key, Character defaultValue) {
+		return get(map, key, Character.class, defaultValue);
+	}
+
+	/**
 	 * 获取Map指定key的值,并转换为Long
 	 *
 	 * @param map Map
@@ -980,6 +1071,19 @@ public class MapUtil {
 	}
 
 	/**
+	 * 获取Map指定key的值,并转换为Long
+	 *
+	 * @param map          Map
+	 * @param key          键
+	 * @param defaultValue 默认值
+	 * @return 值
+	 * @since 5.3.11
+	 */
+	public static Long getLong(Map<?, ?> map, Object key, Long defaultValue) {
+		return get(map, key, Long.class, defaultValue);
+	}
+
+	/**
 	 * 获取Map指定key的值,并转换为{@link Date}
 	 *
 	 * @param map Map
@@ -992,6 +1096,19 @@ public class MapUtil {
 	}
 
 	/**
+	 * 获取Map指定key的值,并转换为{@link Date}
+	 *
+	 * @param map          Map
+	 * @param key          键
+	 * @param defaultValue 默认值
+	 * @return 值
+	 * @since 4.1.2
+	 */
+	public static Date getDate(Map<?, ?> map, Object key, Date defaultValue) {
+		return get(map, key, Date.class, defaultValue);
+	}
+
+	/**
 	 * 获取Map指定key的值,并转换为指定类型
 	 *
 	 * @param <T>  目标值类型
@@ -1002,7 +1119,22 @@ public class MapUtil {
 	 * @since 4.0.6
 	 */
 	public static <T> T get(Map<?, ?> map, Object key, Class<T> type) {
-		return null == map ? null : Convert.convert(type, map.get(key));
+		return get(map, key, type, null);
+	}
+
+	/**
+	 * 获取Map指定key的值,并转换为指定类型
+	 *
+	 * @param <T>          目标值类型
+	 * @param map          Map
+	 * @param key          键
+	 * @param type         值类型
+	 * @param defaultValue 默认值
+	 * @return 值
+	 * @since 5.3.11
+	 */
+	public static <T> T get(Map<?, ?> map, Object key, Class<T> type, T defaultValue) {
+		return null == map ? null : Convert.convert(type, map.get(key), defaultValue);
 	}
 
 	/**
@@ -1016,7 +1148,22 @@ public class MapUtil {
 	 * @since 4.5.12
 	 */
 	public static <T> T get(Map<?, ?> map, Object key, TypeReference<T> type) {
-		return null == map ? null : Convert.convert(type, map.get(key));
+		return get(map, key, type, null);
+	}
+
+	/**
+	 * 获取Map指定key的值,并转换为指定类型
+	 *
+	 * @param <T>          目标值类型
+	 * @param map          Map
+	 * @param key          键
+	 * @param type         值类型
+	 * @param defaultValue 默认值
+	 * @return 值
+	 * @since 5.3.11
+	 */
+	public static <T> T get(Map<?, ?> map, Object key, TypeReference<T> type, T defaultValue) {
+		return null == map ? null : Convert.convert(type, map.get(key), defaultValue);
 	}
 
 	/**