V - type of values stored in the Mappublic class Int2ObjectCache<V> extends Object implements Map<Integer,V>
The eviction strategy is to remove the oldest in a set if the key is not found, or if found then that item. The newly inserted item becomes the youngest in the set. Sets are evicted on a first in, first out, manner unless replacing a matching key.
A good set size would be in the range of 2 to 16 so that the references/keys can fit in a cache-line (assuming references are 32-bit references and 64-byte cache lines, YMMV). A linear search within a cache line is much less costly than a cache-miss to another line.
Null values are not supported by this cache.
| Modifier and Type | Class and Description |
|---|---|
class |
Int2ObjectCache.EntryIterator
Iterator over entries which supports access to unboxed keys via
Int2ObjectCache.EntryIterator.getIntKey(). |
class |
Int2ObjectCache.EntrySet
Set of entries which supports cached iterator to avoid allocation.
|
class |
Int2ObjectCache.KeyIterator
Iterator over keys which supports access to unboxed keys via
Int2ObjectCache.KeyIterator.nextInt(). |
class |
Int2ObjectCache.KeySet
A key set implementation which supports cached iterator to avoid allocation.
|
class |
Int2ObjectCache.ValueCollection
Collection of values which supports cached iterator to avoid allocation.
|
class |
Int2ObjectCache.ValueIterator
An iterator over values.
|
| Constructor and Description |
|---|
Int2ObjectCache(int numSets,
int setSize,
Consumer<V> evictionConsumer)
Constructs cache with provided configuration.
|
| Modifier and Type | Method and Description |
|---|---|
long |
cacheHits()
The number of times a cache hit has occurred on the
get(int) method. |
long |
cacheMisses()
The number of times a cache miss has occurred on the
get(int) method. |
long |
cachePuts()
The number of items that have been put in the cache.
|
int |
capacity()
Get the total capacity for the map to which the load factor will be a fraction of.
|
void |
clear()
Clear down all items in the cache.
|
V |
compute(Integer key,
BiFunction<? super Integer,? super V,? extends V> remappingFunction) |
V |
compute(int key,
IntObjectToObjectFunction<? super V,? extends V> remappingFunction)
Attempts to compute a mapping for the specified key and its current mapped value (or
null if there is no
current mapping). |
V |
computeIfAbsent(Integer key,
Function<? super Integer,? extends V> mappingFunction) |
V |
computeIfAbsent(int key,
IntFunction<? extends V> mappingFunction)
Get a value for a given key, or if it does ot exist then default the value via a
IntFunction and put it in the cache. |
V |
computeIfPresent(Integer key,
BiFunction<? super Integer,? super V,? extends V> remappingFunction) |
V |
computeIfPresent(int key,
IntObjectToObjectFunction<? super V,? extends V> remappingFunction)
If the value for the specified key is present attempts to compute a new mapping given the key and its current
mapped value.
|
boolean |
containsKey(int key)
Overloaded version of
Map.containsKey(Object) that takes a primitive int key. |
boolean |
containsKey(Object key) |
boolean |
containsValue(Object value) |
Int2ObjectCache.EntrySet |
entrySet() |
boolean |
equals(Object o) |
void |
forEach(BiConsumer<? super Integer,? super V> action) |
void |
forEachInt(IntObjConsumer<? super V> consumer)
Implementation of the
forEach(BiConsumer) that avoids boxing of keys. |
V |
get(int key)
Overloaded version of
Map.get(Object) that takes a primitive int key. |
V |
get(Object key) |
V |
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.
|
int |
hashCode() |
boolean |
isEmpty() |
Int2ObjectCache.KeySet |
keySet() |
V |
merge(Integer key,
V value,
BiFunction<? super V,? super V,? extends V> remappingFunction) |
V |
merge(int key,
V value,
BiFunction<? super V,? super V,? extends V> remappingFunction)
If the specified key is not already associated with a value or is associated with null, associates it with the
given non-null value.
|
V |
put(Integer key,
V value) |
V |
put(int key,
V value)
Overloaded version of
Map.put(Object, Object) that takes a primitive int key. |
void |
putAll(Int2ObjectCache<? extends V> map)
Put all values from the given map into this one without allocation.
|
void |
putAll(Map<? extends Integer,? extends V> map) |
V |
putIfAbsent(Integer key,
V value) |
V |
putIfAbsent(int key,
V value)
If the specified key is not already associated with a value (or is mapped
to
null) associates it with the given value and returns
null, else returns the current value. |
V |
remove(int key)
Overloaded version of
Map.remove(Object) that takes a primitive int key. |
boolean |
remove(int key,
V value)
Removes the entry for the specified key only if it is currently mapped to the specified value.
|
V |
remove(Object key) |
boolean |
remove(Object key,
Object value) |
V |
replace(Integer key,
V value) |
boolean |
replace(Integer key,
V oldValue,
V newValue) |
V |
replace(int key,
V value)
Replaces the entry for the specified key only if it is currently mapped to some value.
|
boolean |
replace(int key,
V oldValue,
V newValue)
Replaces the entry for the specified key only if currently mapped to the specified value.
|
void |
replaceAll(BiFunction<? super Integer,? super V,? extends V> function) |
void |
replaceAllInt(IntObjectToObjectFunction<? super V,? extends V> function)
Replaces each entry's value with the result of invoking the given function on that entry until all entries have
been processed or the function throws an exception.
|
void |
resetCounters()
Reset the cache statistics counters to zero.
|
int |
size() |
String |
toString() |
Int2ObjectCache.ValueCollection |
values() |
clone, finalize, getClass, notify, notifyAll, wait, wait, waitgetOrDefaultpublic Int2ObjectCache(int numSets,
int setSize,
Consumer<V> evictionConsumer)
numSets - number of sets, must be power or two.setSize - size of a single set, must be power or two.evictionConsumer - consumer to be notified when entry is being evicted from the cache.public long cacheHits()
get(int) method.get(int) method.public long cacheMisses()
get(int) method.get(int) method.public long cachePuts()
public void resetCounters()
public int capacity()
public boolean containsKey(Object key)
containsKey in interface Map<Integer,V>public boolean containsKey(int key)
Map.containsKey(Object) that takes a primitive int key.key - for indexing the Mappublic boolean containsValue(Object value)
containsValue in interface Map<Integer,V>public V get(int key)
Map.get(Object) that takes a primitive int key.key - for indexing the Mappublic V getOrDefault(int key, V defaultValue)
key - whose associated value is to be returned.defaultValue - the default mapping of the key.defaultValue if this map contains no mapping for the key.public void forEach(BiConsumer<? super Integer,? super V> action)
public void forEachInt(IntObjConsumer<? super V> consumer)
forEach(BiConsumer) that avoids boxing of keys.consumer - to be called for each key/value pair.public V computeIfAbsent(Integer key, Function<? super Integer,? extends V> mappingFunction)
computeIfAbsent in interface Map<Integer,V>public V computeIfAbsent(int key, IntFunction<? extends V> mappingFunction)
IntFunction and put it in the cache.
Primitive specialized version of Map.computeIfAbsent(K, java.util.function.Function<? super K, ? extends V>).
key - to search on.mappingFunction - to provide a value if the get returns null.public V computeIfPresent(Integer key, BiFunction<? super Integer,? super V,? extends V> remappingFunction)
computeIfPresent in interface Map<Integer,V>public V computeIfPresent(int key, IntObjectToObjectFunction<? super V,? extends V> remappingFunction)
Primitive specialized version of Map.computeIfPresent(Object, BiFunction).
key - with which the specified value is to be associated.remappingFunction - the function to compute a value.public V compute(Integer key, BiFunction<? super Integer,? super V,? extends V> remappingFunction)
public V compute(int key, IntObjectToObjectFunction<? super V,? extends V> remappingFunction)
null if there is no
current mapping).
Primitive specialized version of Map.compute(Object, BiFunction).
key - with which the specified value is to be associated.remappingFunction - the function to compute a value.public V merge(Integer key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
public V merge(int key, V value, BiFunction<? super V,? super V,? extends V> remappingFunction)
null.
Primitive specialized version of Map.merge(Object, Object, BiFunction).
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.public V putIfAbsent(Integer key, V value)
putIfAbsent in interface Map<Integer,V>public V putIfAbsent(int key, V value)
null) associates it with the given value and returns
null, else returns the current value.
Primitive specialized version of Map.putIfAbsent(Object, Object).
key - with which the specified value is to be associated.value - to be associated with the specified key.null if there was no mapping for the key.public V put(int key, V value)
Map.put(Object, Object) that takes a primitive int key.public boolean remove(int key,
V value)
Primitive specialized version of Map.remove(Object, Object).
key - key with which the specified value is associated.value - expected to be associated with the specified key.true if the value was removed.public V remove(int key)
Map.remove(Object) that takes a primitive int key.key - for indexing the Mappublic boolean replace(int key,
V oldValue,
V newValue)
Primitive specialized version of Map.replace(Object, Object, Object).
key - with which the specified value is associated.oldValue - expected to be associated with the specified key.newValue - to be associated with the specified key.true if the value was replaced.public V replace(int key, V value)
Primitive specialized version of Map.replace(Object, Object).
key - with which the specified value is associated.value - to be associated with the specified key.public void replaceAll(BiFunction<? super Integer,? super V,? extends V> function)
replaceAll in interface Map<Integer,V>public void replaceAllInt(IntObjectToObjectFunction<? super V,? extends V> function)
Primitive specialized version of Map.replaceAll(BiFunction).
NB: Renamed from forEach to avoid overloading on parameter types of lambda expression, which doesn't play well with type inference in lambda expressions.
function - the function to apply to each entry.public void clear()
If an exception occurs during the eviction function callback then clear may need to be called again to complete.
If an exception occurs the cache should only be used when size() reports zero.
public void putAll(Int2ObjectCache<? extends V> map)
map - whose value are to be added.public Int2ObjectCache.KeySet keySet()
public Int2ObjectCache.ValueCollection values()
public Int2ObjectCache.EntrySet entrySet()
public boolean equals(Object o)
Copyright © 2014-2022 Real Logic Limited. All Rights Reserved.