public class MapKits extends Object
| 限定符和类型 | 类和说明 |
|---|---|
static interface |
MapKits.ValueCreator<T>
Lazy创建Value值的回调类
|
| 限定符和类型 | 字段和说明 |
|---|---|
static float |
DEFAULT_LOAD_FACTOR |
| 构造器和说明 |
|---|
MapKits() |
| 限定符和类型 | 方法和说明 |
|---|---|
static <K,V> V |
createIfAbsentReturnLast(ConcurrentMap<K,V> map,
K key,
MapKits.ValueCreator<? extends V> creator)
如果Key不存在则创建,返回最后存储在Map中的Value.
|
static <K,V> com.google.common.collect.MapDifference<K,V> |
difference(Map<? extends K,? extends V> left,
Map<? extends K,? extends V> right)
对两个Map进行比较,返回MapDifference,然后各种妙用.
|
static <K,V> Map<K,V> |
emptyMapIfNull(Map<K,V> map)
如果map为null,转化为一个安全的空Map.
|
static <V> V |
getValue(Map<String,Object> map,
String key,
Class<V> valueType) |
static <K,V> ConcurrentSkipListMap<K,V> |
newConcurrentSortedMap()
根据等号左边的类型,构造类型正确的ConcurrentSkipListMap.
|
static <K extends Enum<K>,V> |
newEnumMap(Class<K> type)
相比HashMap,当key是枚举类时, 性能与空间占用俱佳.
|
static <K,V> HashMap<K,V> |
newHashMap(K[] keys,
V[] values)
根据等号左边的类型, 构造类型正确的HashMap.
|
static <K,V> HashMap<K,V> |
newHashMap(K key,
V value)
根据等号左边的类型, 构造类型正确的HashMap.
|
static <K,V> HashMap<K,V> |
newHashMap(List<K> keys,
List<V> values)
根据等号左边的类型, 构造类型正确的HashMap.
|
static <K,V> HashMap<K,V> |
newHashMapWithCapacity(int expectedSize,
float loadFactor)
根据等号左边的类型, 构造类型正确的HashMap.
|
static <K extends Comparable,V> |
newSortedMap()
根据等号左边的类型,构造类型正确的TreeMap.
|
static <C,K extends C,V> |
newSortedMap(Comparator<C> comparator)
根据等号左边的类型,构造类型正确的TreeMap.
|
static <K,V> V |
putIfAbsentReturnLast(ConcurrentMap<K,V> map,
K key,
V value)
ConcurrentMap的putIfAbsent()返回之前的Value,此函数封装返回最终存储在Map中的Value
copy from vjtools
|
public static final float DEFAULT_LOAD_FACTOR
public static <K,V> V putIfAbsentReturnLast(ConcurrentMap<K,V> map, K key, V value)
copy from vjtools
K - V - map - key - value - org.apache.commons.lang3.concurrent.ConcurrentUtils#putIfAbsent(ConcurrentMap, Object, Object)public static <K,V> V createIfAbsentReturnLast(ConcurrentMap<K,V> map, K key, MapKits.ValueCreator<? extends V> creator)
如果创建Value对象有一定成本, 直接使用PutIfAbsent可能重复浪费,则使用此类,传入一个被回调的ValueCreator,Lazy创建对象。
copy from vjtools
K - V - map - key - creator - org.apache.commons.lang3.concurrent.ConcurrentUtils#createIfAbsent(ConcurrentMap, Object,
org.apache.commons.lang3.concurrent.ConcurrentInitializer)public static <K,V> HashMap<K,V> newHashMapWithCapacity(int expectedSize, float loadFactor)
注意HashMap中有0.75的加载因子的影响, 需要进行运算后才能正确初始化HashMap的大小.
加载因子也是HashMap中减少Hash冲突的重要一环,如果读写频繁,总记录数不多的Map,可以比默认值0.75进一步降低,建议0.5
copy from vjtools
K - V - expectedSize - 期待的Map大小loadFactor - 加载因子public static <K,V> HashMap<K,V> newHashMap(K key, V value)
同时初始化第一个元素
copy from vjtools
K - V - key - value - public static <K,V> HashMap<K,V> newHashMap(K[] keys, V[] values)
同时初始化元素.
copy from vjtools
K - V - keys - values - public static <K,V> HashMap<K,V> newHashMap(List<K> keys, List<V> values)
同时初始化元素.
copy from vjtools
K - V - keys - values - public static <K extends Comparable,V> TreeMap<K,V> newSortedMap()
copy from vjtools
K - V - Maps.newTreeMap()public static <C,K extends C,V> TreeMap<K,V> newSortedMap(Comparator<C> comparator)
copy from vjtools
C - K - V - comparator - Maps.newTreeMap(Comparator)public static <K extends Enum<K>,V> EnumMap<K,V> newEnumMap(Class<K> type)
copy from vjtools
K - V - type - public static <K,V> ConcurrentSkipListMap<K,V> newConcurrentSortedMap()
copy from vjtools
K - V - public static <K,V> Map<K,V> emptyMapIfNull(Map<K,V> map)
注意返回的Map不可写, 写入会抛出UnsupportedOperationException.
copy from vjtools
K - V - map - Collections.emptyMap()public static <K,V> com.google.common.collect.MapDifference<K,V> difference(Map<? extends K,? extends V> left, Map<? extends K,? extends V> right)
包括key的差集,key的交集,以及key相同但value不同的元素。
copy from vjtools
K - V - left - right - MapDifferenceCopyright © 2020. All rights reserved.