Class ConcurrentLongLongPairHashMap
- java.lang.Object
-
- org.apache.bookkeeper.util.collections.ConcurrentLongLongPairHashMap
-
public class ConcurrentLongLongPairHashMap extends java.lang.ObjectConcurrent hash map where both keys and values are composed of pairs of longs.(long,long) --> (long,long)
Provides similar methods as a
ConcurrentMap<K,V>but since it's an open hash map with linear probing, no node allocations are required to store the keys and values, and no boxing is required.Keys MUST be >= 0.
WARN: method forEach do not guarantee thread safety, nor do the keys, values and asMap method.
The forEach method is specifically designed for single-threaded usage. When iterating over a map with concurrent writes, it becomes possible for new values to be either observed or not observed. There is no guarantee that if we write value1 and value2, and are able to see value2, then we will also see value1. In some cases, it is even possible to encounter two mappings with the same key, leading the keys method to return a List containing two identical keys.
It is crucial to understand that the results obtained from aggregate status methods such as keys, values, and asMap are typically reliable only when the map is not undergoing concurrent updates from other threads. When concurrent updates are involved, the results of these methods reflect transient states that may be suitable for monitoring or estimation purposes, but not for program control.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static interfaceConcurrentLongLongPairHashMap.BiConsumerLongPairA BiConsumer Long pair.static classConcurrentLongLongPairHashMap.BuilderBuilder of ConcurrentLongLongPairHashMap.static interfaceConcurrentLongLongPairHashMap.LongLongPairFunctionA Long pair function.static interfaceConcurrentLongLongPairHashMap.LongLongPairPredicateA Long pair predicate.static classConcurrentLongLongPairHashMap.LongPairA pair of long values.
-
Constructor Summary
Constructors Constructor Description ConcurrentLongLongPairHashMap()Deprecated.ConcurrentLongLongPairHashMap(int expectedItems)Deprecated.ConcurrentLongLongPairHashMap(int expectedItems, int concurrencyLevel)Deprecated.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description java.util.Map<ConcurrentLongLongPairHashMap.LongPair,ConcurrentLongLongPairHashMap.LongPair>asMap()longcapacity()voidclear()booleancontainsKey(long key1, long key2)voidforEach(ConcurrentLongLongPairHashMap.BiConsumerLongPair processor)Iterate over all the entries in the map and apply the processor function to each of them.ConcurrentLongLongPairHashMap.LongPairget(long key1, long key2)(package private) longgetUsedBucketCount()(package private) static longhash(long key1, long key2)booleanisEmpty()java.util.List<ConcurrentLongLongPairHashMap.LongPair>keys()static ConcurrentLongLongPairHashMap.BuildernewBuilder()booleanput(long key1, long key2, long value1, long value2)booleanputIfAbsent(long key1, long key2, long value1, long value2)booleanremove(long key1, long key2)Remove an existing entry if found.booleanremove(long key1, long key2, long value1, long value2)(package private) static intsignSafeMod(long n, int max)longsize()longsizeInBytes()java.util.List<ConcurrentLongLongPairHashMap.LongPair>values()
-
-
-
Constructor Detail
-
ConcurrentLongLongPairHashMap
@Deprecated public ConcurrentLongLongPairHashMap()
Deprecated.
-
ConcurrentLongLongPairHashMap
@Deprecated public ConcurrentLongLongPairHashMap(int expectedItems)
Deprecated.
-
ConcurrentLongLongPairHashMap
@Deprecated public ConcurrentLongLongPairHashMap(int expectedItems, int concurrencyLevel)Deprecated.
-
-
Method Detail
-
newBuilder
public static ConcurrentLongLongPairHashMap.Builder newBuilder()
-
size
public long size()
-
sizeInBytes
public long sizeInBytes()
-
capacity
public long capacity()
-
isEmpty
public boolean isEmpty()
-
getUsedBucketCount
long getUsedBucketCount()
-
get
public ConcurrentLongLongPairHashMap.LongPair get(long key1, long key2)
- Parameters:
key-- Returns:
- the value or -1 if the key was not present
-
containsKey
public boolean containsKey(long key1, long key2)
-
put
public boolean put(long key1, long key2, long value1, long value2)
-
putIfAbsent
public boolean putIfAbsent(long key1, long key2, long value1, long value2)
-
remove
public boolean remove(long key1, long key2)Remove an existing entry if found.- Parameters:
key-- Returns:
- the value associated with the key or -1 if key was not present
-
remove
public boolean remove(long key1, long key2, long value1, long value2)
-
clear
public void clear()
-
forEach
public void forEach(ConcurrentLongLongPairHashMap.BiConsumerLongPair processor)
Iterate over all the entries in the map and apply the processor function to each of them.Warning: Do Not Guarantee Thread-Safety.
- Parameters:
processor- the processor to process the elements.
-
keys
public java.util.List<ConcurrentLongLongPairHashMap.LongPair> keys()
- Returns:
- a new list of all keys (makes a copy)
-
values
public java.util.List<ConcurrentLongLongPairHashMap.LongPair> values()
-
asMap
public java.util.Map<ConcurrentLongLongPairHashMap.LongPair,ConcurrentLongLongPairHashMap.LongPair> asMap()
-
hash
static final long hash(long key1, long key2)
-
signSafeMod
static final int signSafeMod(long n, int max)
-
-