public static class MultiBinaryLongMap.MaskedBinaryLongMap extends Object implements BinaryLongMap
MaskedBinaryLongMap is not thread-safe, and it is the caller's responsibility to ensure that any concurrent access to the MaskedBinaryLongMap is protected in a manner consistent with the underlying BinaryLongMap.
Modifier and Type | Class and Description |
---|---|
protected class |
MultiBinaryLongMap.MaskedBinaryLongMap.MaskedEntry
MaskedEntry represents an Entry in the MaskedBinaryLongMap.
|
protected class |
MultiBinaryLongMap.MaskedBinaryLongMap.MaskedEntryVisitor
MaskedEntryVisitor is a wrapper for an EntryVisitor that exposes the logical entries of this MaskedEntryVisitor.
|
BinaryLongMap.Entry, BinaryLongMap.EntryVisitor, BinaryLongMap.SimpleMapImpl
Modifier and Type | Field and Description |
---|---|
protected BinaryLongMap |
f_blm
The underlying BinaryLongMap.
|
protected int |
f_cBits
The number of bits that the logical value represented by this MaskedBinaryLongMap is limited to in the underlying physical representation.
|
protected MultiBinaryLongMap.MaskedLongMapHolder |
f_holder
The MaskedLongMapHolder associated with this MaskedBinaryLongMap.
|
protected long |
f_nMask
The bit-mask representing the positions used to store values in the underlying physical representation.
|
protected int |
m_cShift
The number of bits that the logical value represented by this MaskedBinaryLongMap is shifted left in the underlying physical representation.
|
Constructor and Description |
---|
MaskedBinaryLongMap(MultiBinaryLongMap.MaskedLongMapHolder holder, BinaryLongMap blm, int cShift, int cBits)
Construct a MaskedBinaryLongMap based on the specified binary long map using the specified shift and bit-widths.
|
Modifier and Type | Method and Description |
---|---|
void |
clear()
Initialize the map to an empty state.
|
protected long |
decode(long lEncoded)
Decode the n-bit value from the specified
encoded long value. |
protected long |
encode(long lEncoded, long lValue)
Encode the specified n-bit value into the possibly already encoded value, preserving any unrelated bits.
|
long |
get(Binary binKey)
Find the specified key in the map and return the value associated with it.
|
MultiBinaryLongMap.MaskedLongMapHolder |
getHolder()
Return the MaskedLongMapHolder used to manage the lifecycle of this MaskedBinaryLongMap.
|
protected MultiBinaryLongMap.MaskedBinaryLongMap.MaskedEntryVisitor |
instantiateMaskedEntryVisitor(BinaryLongMap.EntryVisitor visitor, boolean fExisting)
Instantiate a MaskedEntryVisitor to use to
visit(com.tangosol.util.Binary, com.tangosol.util.BinaryLongMap.EntryVisitor) entries in this MaskedBinaryLongMap. |
void |
internKeys(Object o)
Internal opaque method: De-duplicate keys.
|
Iterator<Binary> |
keys()
Obtain an iterator of the keys stored in the map.
|
Iterator<Binary> |
keys(Predicate<BinaryLongMap.Entry> predicate)
Obtain an iterator of the keys stored in the map whose corresponding
Entry matches the passed Predicate<Entry> . |
void |
put(Binary binKey, long lValue)
Blindly store the passed value for the specified key, adding the key if it is not already in the map, or replacing the current value if the key is in the map.
|
boolean |
putIfAbsent(Binary binKey, long lValue)
Store the passed value for the specified key, only if the key does not currently exist in the map.
|
void |
remove(Binary binKey)
Blindly remove the specified Binary key from the map.
|
boolean |
remove(Binary binKey, long lValue)
Remove the specified Binary key from the map iff it exists in the map and is associated with the specified value.
|
boolean |
replace(Binary binKey, long lValueOld, long lValueNew)
Store the passed "new" value for the specified key, only if the current value associated with the specified key is the same as the specified "old" value.
|
int |
size()
Determine the size of the map.
|
void |
visit(Binary binKey, BinaryLongMap.EntryVisitor visitor)
Apply the specified visitor to the entry associated with the specified key, if the entry exists or may be added.
|
void |
visitAll(BinaryLongMap.EntryVisitor visitor)
Apply the specified visitor to all entries in the BinaryLongMap.
|
protected final MultiBinaryLongMap.MaskedLongMapHolder f_holder
protected final BinaryLongMap f_blm
protected int m_cShift
protected final int f_cBits
protected long f_nMask
public MaskedBinaryLongMap(MultiBinaryLongMap.MaskedLongMapHolder holder, BinaryLongMap blm, int cShift, int cBits)
lValueLogical = (lValuePhysical >> cShift) & ((1 << cBits) - 1)
holder
- the MaskedLongMapHolder associated with this MaskedBinaryLongMapblm
- the underlying BinaryLongMapcShift
- the number of positions to left-shift the values stored in this MaskedBinaryLongMapcBits
- the number of bits in the values stored in this MaskedBinaryLongMappublic MultiBinaryLongMap.MaskedLongMapHolder getHolder()
public long get(Binary binKey)
get
in interface BinaryLongMap
binKey
- a Binary keypublic void put(Binary binKey, long lValue)
Note that associating the value zero with a key is analogous to removing the key.
put
in interface BinaryLongMap
binKey
- the Binary key to add or updatelValue
- the value to associate with the keypublic boolean putIfAbsent(Binary binKey, long lValue)
Note that associating the value zero with a key using this method will have no effect, since were that key already present, there would be no change, and were it not present, the value zero is analogous to removing the key, which again is no change (since it is not present).
putIfAbsent
in interface BinaryLongMap
binKey
- a Binary keylValue
- the new value to associate with the passed keypublic boolean replace(Binary binKey, long lValueOld, long lValueNew)
Note that replacing the value of zero is analogous to putIfAbsent
, and associating the value zero with a key using this method is the same as remove
passing the old value to match.
replace
in interface BinaryLongMap
binKey
- a Binary keylValueOld
- the assumed old value to replacelValueNew
- the new value to associate with the passed keypublic void remove(Binary binKey)
remove
in interface BinaryLongMap
binKey
- a Binary keypublic boolean remove(Binary binKey, long lValue)
Note that removing an association whose value is zero has no effect.
remove
in interface BinaryLongMap
binKey
- a Binary keylValue
- the value that the key must have in order to be removedpublic void clear()
clear
in interface BinaryLongMap
public int size()
size
in interface BinaryLongMap
public Iterator<Binary> keys()
keys
in interface BinaryLongMap
public Iterator<Binary> keys(Predicate<BinaryLongMap.Entry> predicate)
Entry
matches the passed Predicate<Entry>
.
The entry passed to the predicate should be treated as read-only, and any attempt to modify the entry may have undefined behavior and/or throw an Exception. Modifications to entries should instead be performed using an BinaryLongMap.EntryVisitor
via the BinaryLongMap.visit(com.tangosol.util.Binary, com.tangosol.util.BinaryLongMap.EntryVisitor)
or BinaryLongMap.visitAll(com.tangosol.util.BinaryLongMap.EntryVisitor)
methods.
keys
in interface BinaryLongMap
predicate
- a Predicate<Entry> to apply to each Entrypublic void visit(Binary binKey, BinaryLongMap.EntryVisitor visitor)
BinaryLongMap.Entry.setValue(long)
).visit
in interface BinaryLongMap
binKey
- the key to visitvisitor
- the visitor to applypublic void visitAll(BinaryLongMap.EntryVisitor visitor)
visitAll
in interface BinaryLongMap
visitor
- the visitor to applypublic void internKeys(Object o)
internKeys
in interface BinaryLongMap
o
- some implementation-specific objectprotected MultiBinaryLongMap.MaskedBinaryLongMap.MaskedEntryVisitor instantiateMaskedEntryVisitor(BinaryLongMap.EntryVisitor visitor, boolean fExisting)
visit(com.tangosol.util.Binary, com.tangosol.util.BinaryLongMap.EntryVisitor)
entries in this MaskedBinaryLongMap.visitor
- the underlying visitor to wrapfExisting
- true iff the underlying visitor is to visit only entries that logically exist in the MaskedBinaryLongMapprotected long decode(long lEncoded)
encoded
long value.lEncoded
- the 64-bit encoded value to decodeprotected long encode(long lEncoded, long lValue)
lEncoded
- the 64-bit value to encode intolValue
- the value to encode