Merge pull request #538 from runyan/v4-dev

MapUtil可以提供线程安全的map
This commit is contained in:
Golden Looly 2019-09-15 10:15:39 +08:00 committed by GitHub
commit aa12a8e408
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

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