Package org.elasticsearch.common.collect
Class CopyOnWriteHashMap<K,V>
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- org.elasticsearch.common.collect.CopyOnWriteHashMap<K,V>
-
- All Implemented Interfaces:
Map<K,V>
public final class CopyOnWriteHashMap<K,V> extends AbstractMap<K,V>
An immutable map whose writes result in a new copy of the map to be created. This is essentially a hash array mapped trie: inner nodes use a bitmap in order to map hashes to slots by counting ones. In case of a collision (two values having the same 32-bits hash), a leaf node is created which stores and searches for values sequentially. Reads and writes both perform in logarithmic time. Null keys and values are not supported. This structure might need to perform several object creations per write so it is better suited for work-loads that are not too write-intensive.- See Also:
- the wikipedia page
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object,V extends Object>
-
-
Constructor Summary
Constructors Constructor Description CopyOnWriteHashMap()Create a new empty map.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description static <T> T[]appendElement(T[] array, T element)booleancontainsKey(Object key)CopyOnWriteHashMap<K,V>copyAndPut(K key, V value)Associatekeywithvalueand return a new copy of the hash table.<K1 extends K,V1 extends V>
CopyOnWriteHashMap<K,V>copyAndPutAll(Iterable<Map.Entry<K1,V1>> entries)CopyOnWriteHashMap<K,V>copyAndPutAll(Map<? extends K,? extends V> other)Same ascopyAndPut(Object, Object)but for an arbitrary number of entries.<K1 extends K,V1 extends V>
CopyOnWriteHashMap<K,V>copyAndPutAll(Stream<Map.Entry<K1,V1>> entries)CopyOnWriteHashMap<K,V>copyAndRemove(Object key)Remove the given key from this map.CopyOnWriteHashMap<K,V>copyAndRemoveAll(Collection<?> keys)Same ascopyAndRemove(Object)but for an arbitrary number of entries.static <K,V>
CopyOnWriteHashMap<K,V>copyOf(Map<? extends K,? extends V> map)Return a copy of the provided map.Set<Map.Entry<K,V>>entrySet()Vget(Object key)static <T> T[]insertElement(T[] array, T element, int index)intsize()-
Methods inherited from class java.util.AbstractMap
clear, clone, containsValue, equals, hashCode, isEmpty, keySet, put, putAll, remove, toString, values
-
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
Method Detail
-
copyOf
public static <K,V> CopyOnWriteHashMap<K,V> copyOf(Map<? extends K,? extends V> map)
Return a copy of the provided map.
-
appendElement
public static <T> T[] appendElement(T[] array, T element)
-
insertElement
public static <T> T[] insertElement(T[] array, T element, int index)
-
containsKey
public boolean containsKey(Object key)
- Specified by:
containsKeyin interfaceMap<K,V>- Overrides:
containsKeyin classAbstractMap<K,V>
-
size
public int size()
-
copyAndPut
public CopyOnWriteHashMap<K,V> copyAndPut(K key, V value)
Associatekeywithvalueand return a new copy of the hash table. The current hash table is not modified.
-
copyAndPutAll
public CopyOnWriteHashMap<K,V> copyAndPutAll(Map<? extends K,? extends V> other)
Same ascopyAndPut(Object, Object)but for an arbitrary number of entries.
-
copyAndPutAll
public <K1 extends K,V1 extends V> CopyOnWriteHashMap<K,V> copyAndPutAll(Iterable<Map.Entry<K1,V1>> entries)
-
copyAndPutAll
public <K1 extends K,V1 extends V> CopyOnWriteHashMap<K,V> copyAndPutAll(Stream<Map.Entry<K1,V1>> entries)
-
copyAndRemove
public CopyOnWriteHashMap<K,V> copyAndRemove(Object key)
Remove the given key from this map. The current hash table is not modified.
-
copyAndRemoveAll
public CopyOnWriteHashMap<K,V> copyAndRemoveAll(Collection<?> keys)
Same ascopyAndRemove(Object)but for an arbitrary number of entries.
-
-