Package org.agrona.collections
Class Int2ObjectHashMap<V>
java.lang.Object
org.agrona.collections.Int2ObjectHashMap<V>
- Type Parameters:
V- type of values stored in theMap
- Direct Known Subclasses:
Int2NullableObjectHashMap
Map implementation specialised for int keys using open addressing and
linear probing for cache efficient access.-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionfinal classIterator over entries which supports access to unboxed keys viaInt2ObjectHashMap.EntryIterator.getIntKey().final classSet of entries which supports access via an optionally cached iterator to avoid allocation.final classIterator over keys which supports access to unboxed keys viaInt2ObjectHashMap.KeyIterator.nextInt().final classSet of keys which supports optionally cached iterators to avoid allocation.final classCollection of values which supports optionally cached iterators to avoid allocation.final classIterator over values. -
Constructor Summary
ConstructorsConstructorDescriptionConstructs map withMIN_CAPACITY,Hashing.DEFAULT_LOAD_FACTORand enables caching of iterators.Int2ObjectHashMap(int initialCapacity, float loadFactor) Constructs map with given initial capacity and load factory and enables caching of iterators.Int2ObjectHashMap(int initialCapacity, float loadFactor, boolean shouldAvoidAllocation) Construct a new map allowing a configuration for initial capacity and load factor.Int2ObjectHashMap(Int2ObjectHashMap<V> mapToCopy) Copy construct a new map from an existing one. -
Method Summary
Modifier and TypeMethodDescriptionintcapacity()Get the total capacity for the map to which the load factor will be a fraction of.voidclear()voidcompact()Compact theMapbacking arrays by rehashing with a capacity just larger than current size and giving consideration to the load factor.compute(int key, IntObjectToObjectFunction<? super V, ? extends V> remappingFunction) Attempts to compute a mapping for the specified key and its current mapped value (ornullif there is no current mapping).computeIfAbsent(int key, IntFunction<? extends V> mappingFunction) Get a value for a given key, or if it does not exist then default the value via aIntFunctionand put it in the map.computeIfAbsent(Integer key, Function<? super Integer, ? extends V> mappingFunction) computeIfPresent(int key, IntObjectToObjectFunction<? super V, ? extends V> remappingFunction) If the value for the specified key is present and non-null, attempts to compute a new mapping given the key and its current mapped value.computeIfPresent(Integer key, BiFunction<? super Integer, ? super V, ? extends V> remappingFunction) booleancontainsKey(int key) Overloaded version ofMap.containsKey(Object)that takes a primitive int key.booleancontainsKey(Object key) booleancontainsValue(Object value) entrySet()booleanvoidforEach(BiConsumer<? super Integer, ? super V> action) voidforEachInt(IntObjConsumer<V> consumer) Primitive specialised implementation ofMap.forEach(BiConsumer).get(int key) Overloaded version ofMap.get(Object)that takes a primitive int key.protected VgetMapped(int key) Get mapped value without boxing the key.getOrDefault(int key, V defaultValue) Returns the value to which the specified key is mapped, or defaultValue if this map contains no mapping for the key.inthashCode()voidintForEach(IntObjConsumer<V> consumer) Deprecated.booleanisEmpty()keySet()floatGet the load factor beyond which the map will increase size.protected ObjectmapNullValue(Object value) Interceptor for masking null values.Primitive specialised version ofMap.merge(Object, Object, BiFunction).Overloaded version ofMap.put(Object, Object)that takes a primitive int key.voidvoidputAll(Int2ObjectHashMap<? extends V> map) Put all values from the given map into this one without allocation.putIfAbsent(int key, V value) Primitive specialised version ofMap.putIfAbsent(Object, Object).remove(int key) Overloaded version ofMap.remove(Object)that takes a primitive int key.booleanPrimitive specialised version ofMap.remove(Object, Object).booleanPrimitive specialised version ofMap.replace(Object, Object).booleanPrimitive specialised version ofMap.replace(Object, Object, Object).voidreplaceAll(BiFunction<? super Integer, ? super V, ? extends V> function) voidreplaceAllInt(IntObjectToObjectFunction<? super V, ? extends V> function) Primitive specialised version ofMap.replaceAll(BiFunction).intGet the actual threshold which when reached the map will resize.intsize()toString()protected VunmapNullValue(Object value) Interceptor for unmasking null values.values()Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, waitMethods inherited from interface java.util.Map
getOrDefault, putIfAbsent, replace, replace
-
Constructor Details
-
Int2ObjectHashMap
public Int2ObjectHashMap()Constructs map withMIN_CAPACITY,Hashing.DEFAULT_LOAD_FACTORand enables caching of iterators. -
Int2ObjectHashMap
public Int2ObjectHashMap(int initialCapacity, float loadFactor) Constructs map with given initial capacity and load factory and enables caching of iterators.- Parameters:
initialCapacity- for the backing array.loadFactor- limit for resizing on puts.
-
Int2ObjectHashMap
public Int2ObjectHashMap(int initialCapacity, float loadFactor, boolean shouldAvoidAllocation) Construct a new map allowing a configuration for initial capacity and load factor.- Parameters:
initialCapacity- for the backing array.loadFactor- limit for resizing on puts.shouldAvoidAllocation- should allocation be avoided by caching iterators and map entries.
-
Int2ObjectHashMap
Copy construct a new map from an existing one.- Parameters:
mapToCopy- for construction.
-
-
Method Details
-
loadFactor
public float loadFactor()Get the load factor beyond which the map will increase size.- Returns:
- load factor for when the map should increase size.
-
capacity
public int capacity()Get the total capacity for the map to which the load factor will be a fraction of.- Returns:
- the total capacity for the map.
-
resizeThreshold
public int resizeThreshold()Get the actual threshold which when reached the map will resize. This is a function of the current capacity and load factor.- Returns:
- the threshold when the map will resize.
-
size
public int size() -
isEmpty
public boolean isEmpty() -
forEach
-
intForEach
Deprecated.UseforEachInt(IntObjConsumer)instead.UseforEachInt(IntObjConsumer)instead.- Parameters:
consumer- a callback called for each key/value pair in the map.- See Also:
-
forEachInt
Primitive specialised implementation ofMap.forEach(BiConsumer).NB: Renamed from forEach to avoid overloading on parameter types of lambda expression, which doesn't play well with type inference in lambda expressions.
- Parameters:
consumer- a callback called for each key/value pair in the map.
-
containsKey
- Specified by:
containsKeyin interfaceMap<Integer,V>
-
containsKey
public boolean containsKey(int key) Overloaded version ofMap.containsKey(Object)that takes a primitive int key.- Parameters:
key- for indexing theMap.- Returns:
- true if the key is found otherwise false.
-
containsValue
- Specified by:
containsValuein interfaceMap<Integer,V>
-
get
-
get
Overloaded version ofMap.get(Object)that takes a primitive int key.- Parameters:
key- for indexing theMap.- Returns:
- the value if found otherwise null.
-
getOrDefault
Returns the value to which the specified key is mapped, or defaultValue if this map contains no mapping for the key.- Parameters:
key- whose associated value is to be returned.defaultValue- the default mapping of the key.- Returns:
- the value to which the specified key is mapped, or
defaultValueif this map contains no mapping for the key.
-
getMapped
Get mapped value without boxing the key.- Parameters:
key- to get value by.- Returns:
- mapped value or
null.
-
computeIfAbsent
- Specified by:
computeIfAbsentin interfaceMap<Integer,V>
-
computeIfAbsent
Get a value for a given key, or if it does not exist then default the value via aIntFunctionand put it in the map.Primitive specialized version of
Map.computeIfAbsent(Object, Function).- Parameters:
key- to search on.mappingFunction- to provide a value if the get returns null.- Returns:
- the value if found otherwise the default.
-
computeIfPresent
public V computeIfPresent(Integer key, BiFunction<? super Integer, ? super V, ? extends V> remappingFunction) - Specified by:
computeIfPresentin interfaceMap<Integer,V>
-
computeIfPresent
public V computeIfPresent(int key, IntObjectToObjectFunction<? super V, ? extends V> remappingFunction) If the value for the specified key is present and non-null, attempts to compute a new mapping given the key and its current mapped value.If the function returns
null, the mapping is removed.Primitive specialized version of
Map.computeIfPresent(Object, BiFunction).- Parameters:
key- to search on.remappingFunction- to provide a value if the get returns missingValue.- Returns:
- the new value associated with the specified key, or
nullif none.
-
compute
-
compute
Attempts to compute a mapping for the specified key and its current mapped value (ornullif there is no current mapping).If the function returns
null, the mapping is removed (or remains absent if initially absent).Primitive specialized version of
Map.compute(Object, BiFunction).- Parameters:
key- to search on.remappingFunction- to provide a value if the get returns missingValue.- Returns:
- the new value associated with the specified key, or
nullif none.
-
merge
-
merge
Primitive specialised version ofMap.merge(Object, Object, BiFunction).- Parameters:
key- with which the resulting value is to be associated.value- the non-null value to be merged with the existing value associated with the key or, if no existing value or a null value is associated with the key, to be associated with the key.remappingFunction- the function to recompute a value if present.- Returns:
- the new value associated with the specified key, or null if no value is associated with the key.
-
put
-
put
Overloaded version ofMap.put(Object, Object)that takes a primitive int key. -
remove
-
remove
Overloaded version ofMap.remove(Object)that takes a primitive int key.- Parameters:
key- for indexing theMap.- Returns:
- the value if found otherwise null.
-
remove
-
remove
Primitive specialised version ofMap.remove(Object, Object).- Parameters:
key- with which the specified value is associated.value- expected to be associated with the specified key.- Returns:
trueif the value was removed.
-
clear
public void clear() -
compact
public void compact()Compact theMapbacking arrays by rehashing with a capacity just larger than current size and giving consideration to the load factor. -
putAll
-
putAll
Put all values from the given map into this one without allocation.- Parameters:
map- whose value are to be added.
-
putIfAbsent
Primitive specialised version ofMap.putIfAbsent(Object, Object).- Parameters:
key- with which the specified value is to be associated.value- to be associated with the specified key.- Returns:
- the previous value associated with the specified key, or
nullif there was no mapping for the key.
-
keySet
-
values
-
entrySet
-
toString
-
equals
-
hashCode
public int hashCode() -
mapNullValue
Interceptor for masking null values.- Parameters:
value- value to mask.- Returns:
- masked value.
-
unmapNullValue
Interceptor for unmasking null values.- Parameters:
value- value to unmask.- Returns:
- unmasked value.
-
replace
Primitive specialised version ofMap.replace(Object, Object).- Parameters:
key- key with which the specified value is associated.value- value to be associated with the specified key.- Returns:
- the previous value associated with the specified key, or
nullif there was no mapping for the key.
-
replace
Primitive specialised version ofMap.replace(Object, Object, Object).- Parameters:
key- key with which the specified value is associated.oldValue- value expected to be associated with the specified key.newValue- value to be associated with the specified key.- Returns:
trueif the value was replaced.
-
replaceAll
- Specified by:
replaceAllin interfaceMap<Integer,V>
-
replaceAllInt
Primitive specialised version ofMap.replaceAll(BiFunction).NB: Renamed from replaceAll to avoid overloading on parameter types of lambda expression, which doesn't play well with type inference in lambda expressions.
- Parameters:
function- the function to apply to each entry.
-
forEachInt(IntObjConsumer)instead.