diff --git a/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java b/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java index cf3e382c1..53e6cbdea 100644 --- a/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java +++ b/hutool-core/src/main/java/cn/hutool/core/map/MapUtil.java @@ -14,6 +14,7 @@ import java.util.Map; import java.util.Map.Entry; import java.util.Set; import java.util.TreeMap; +import java.util.concurrent.ConcurrentHashMap; import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.convert.Convert; @@ -939,4 +940,43 @@ public class MapUtil { return map; } + + /** + * 新建一个初始容量为{@link MapUtil#DEFAULT_INITIAL_CAPACITY} 的ConcurrentHashMap + * + * @param key的类型 + * @param value的类型 + * @return ConcurrentHashMap + */ + public static ConcurrentHashMap newConcurrentHashMap() { + return new ConcurrentHashMap<>(DEFAULT_INITIAL_CAPACITY); + } + + /** + * 新建一个ConcurrentHashMap + * + * @param size 初始容量,当传入的容量小于等于0时,容量为{@link MapUtil#DEFAULT_INITIAL_CAPACITY} + * @param key的类型 + * @param value的类型 + * @return ConcurrentHashMap + */ + public static ConcurrentHashMap newConcurrentHashMapWithSize(int size) { + size = size <= 0 ? DEFAULT_INITIAL_CAPACITY : size; + return new ConcurrentHashMap<>(size); + } + + /** + * 传入一个Map将其转化为ConcurrentHashMap类型 + * + * @param map map + * @param key的类型 + * @param value的类型 + * @return ConcurrentHashMap + */ + public static ConcurrentHashMap newConcurrentHashMap(Map map) { + if(isEmpty(map)) { + return new ConcurrentHashMap<>(DEFAULT_INITIAL_CAPACITY); + } + return new ConcurrentHashMap<>(map); + } }