Package com.tangosol.util
Class AbstractKeySetBasedMap<K,V>
- java.lang.Object
-
- com.tangosol.util.Base
-
- com.tangosol.util.AbstractKeyBasedMap<K,V>
-
- com.tangosol.util.AbstractKeySetBasedMap<K,V>
-
- All Implemented Interfaces:
Map<K,V>
- Direct Known Subclasses:
ContinuousQueryCache
,OverflowMap
,SerializationMap
,WrapperObservableMap
public abstract class AbstractKeySetBasedMap<K,V> extends AbstractKeyBasedMap<K,V>
AbstractKeySetBasedMap is an extension to the AbstractKeyBasedMap that has a full awareness of the set of keys upon which the Map is based. As a result, it is possible to optimize the implementation of a number of methods that benefit from a knowledge of the entire set of keys.Read-only implementations must implement
getInternalKeySet()
andAbstractKeyBasedMap.get(Object)
. Read/write implementations must additionally implementAbstractKeyBasedMap.put(Object, Object)
andAbstractKeyBasedMap.remove(Object)
. If the implementation has any cost of returning an "old value", such as is done by theMap.put(K, V)
andMap.remove(Object)
, then theAbstractKeyBasedMap.putAll(java.util.Map)
andAbstractKeyBasedMap.removeBlind(Object)
methods should also be implemented. The only other obvious method for optimization isAbstractKeyBasedMap.clear()
, if the implementation is able to do it in bulk.- Author:
- 2005.09.20 cp
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description class
AbstractKeySetBasedMap.EntrySet
A set of entries backed by this map.class
AbstractKeySetBasedMap.KeyIterator
An iterator over the keys from the internal key Set that implements element removal via the Map's removeBlind method.protected class
AbstractKeySetBasedMap.KeySet
A set of keys backed by this map.protected class
AbstractKeySetBasedMap.ValuesCollection
A Collection of values backed by this map.-
Nested classes/interfaces inherited from class com.tangosol.util.AbstractKeyBasedMap
AbstractKeyBasedMap.DeferredCacheEvent<K,V>
-
Nested classes/interfaces inherited from class com.tangosol.util.Base
Base.LoggingWriter
-
-
Constructor Summary
Constructors Constructor Description AbstractKeySetBasedMap()
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description boolean
containsKey(Object oKey)
Returns true if this map contains a mapping for the specified key.protected abstract Set<K>
getInternalKeySet()
Obtain a set of keys that are represented by this Map.protected Set<Map.Entry<K,V>>
instantiateEntrySet()
Factory pattern: Create a Set that represents the entries in the Map.protected Iterator<K>
instantiateKeyIterator()
Factory pattern: Create a mutable Iterator over the keys in the Mapprotected Set<K>
instantiateKeySet()
Factory pattern: Create a Set that represents the keys in the Mapprotected Collection<V>
instantiateValues()
Factory pattern: Instantiate the values Collection.boolean
isEmpty()
Returns true if this map contains no key-value mappings.protected boolean
isInternalKeySetIteratorMutable()
Determine if this Iterator should remove an iterated item by calling remove on the internal key Set Iterator, or by calling removeBlind on the map itself.protected Iterator<K>
iterateKeys()
Create an iterator over the keys in this Map.int
size()
Returns the number of key-value mappings in this map.-
Methods inherited from class com.tangosol.util.AbstractKeyBasedMap
clear, clone, containsValue, entrySet, equals, get, getAll, hashCode, keySet, put, putAll, remove, removeBlind, toString, values
-
Methods inherited from class com.tangosol.util.Base
azzert, azzert, azzert, azzertFailed, breakLines, breakLines, capitalize, checkNotEmpty, checkNotNull, checkRange, computeSafeWaitTime, decimalValue, dup, dup, ensureBigDecimal, ensureClassLoader, ensureRuntimeException, ensureRuntimeException, equals, equalsDeep, err, err, err, err, err, escape, formatDateTime, getCallerStackFrame, getCommonMonitor, getCommonMonitor, getCommonMonitor, getContextClassLoader, getContextClassLoader, getDeepMessage, getErr, getLastSafeTimeMillis, getLog, getMaxDecDigits, getMaxHexDigits, getOriginalException, getOut, getProcessRandom, getRandom, getRandomBinary, getRandomBinary, getRandomString, getSafeTimeMillis, getStackFrame, getStackFrames, getStackTrace, getStackTrace, getStackTrace, getThreadFactory, getTimeZone, getUpTimeMillis, hashCode, hexValue, indentString, indentString, isDecimal, isHex, isLogEcho, isOctal, log, log, log, log, log, makeInteger, makeLong, makeThread, mergeArray, mergeBooleanArray, mergeByteArray, mergeCharArray, mergeDoubleArray, mergeFloatArray, mergeIntArray, mergeLongArray, mod, mod, octalValue, out, out, out, out, out, pad, parseBandwidth, parseBandwidth, parseDelimitedString, parseHex, parseHex, parseMemorySize, parseMemorySize, parsePercentage, parseTime, parseTime, parseTimeNanos, parseTimeNanos, printStackTrace, randomize, randomize, randomize, randomize, read, read, read, read, read, read, read, replace, setErr, setLog, setLogEcho, setOut, sleep, toBandwidthString, toBandwidthString, toCharEscape, toCrc, toCrc, toCrc, toCrc, toCrc, toDecString, toDelimitedString, toDelimitedString, toDelimitedString, toDelimitedString, toHex, toHex, toHexDump, toHexEscape, toHexEscape, toHexEscape, toHexEscape, toHexString, toMemorySizeString, toMemorySizeString, toQuotedCharEscape, toQuotedStringEscape, toSqlString, toString, toString, toStringEscape, toUnicodeEscape, trace, trace, trace, trace, trace, trace, trace, trace, trace, truncateString, truncateString, wait
-
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
-
containsKey
public boolean containsKey(Object oKey)
Returns true if this map contains a mapping for the specified key.- Specified by:
containsKey
in interfaceMap<K,V>
- Overrides:
containsKey
in classAbstractKeyBasedMap<K,V>
- Returns:
- true if this map contains a mapping for the specified key, false otherwise.
-
isEmpty
public boolean isEmpty()
Returns true if this map contains no key-value mappings.
-
size
public int size()
Returns the number of key-value mappings in this map.
-
iterateKeys
protected Iterator<K> iterateKeys()
Create an iterator over the keys in this Map. Note that this implementation delegates back to the key Set, while the super class delegates from the key Set to this method.- Specified by:
iterateKeys
in classAbstractKeyBasedMap<K,V>
- Returns:
- a new instance of an Iterator over the keys in this Map
-
getInternalKeySet
protected abstract Set<K> getInternalKeySet()
Obtain a set of keys that are represented by this Map.The AbstractKeySetBasedMap only utilizes the internal key set as a read-only resource.
- Returns:
- an internal Set of keys that are contained by this Map
-
isInternalKeySetIteratorMutable
protected boolean isInternalKeySetIteratorMutable()
Determine if this Iterator should remove an iterated item by calling remove on the internal key Set Iterator, or by calling removeBlind on the map itself.- Returns:
- true to remove using the internal key Set Iterator or false to
use the
AbstractKeyBasedMap.removeBlind(Object)
method
-
instantiateKeySet
protected Set<K> instantiateKeySet()
Factory pattern: Create a Set that represents the keys in the Map- Overrides:
instantiateKeySet
in classAbstractKeyBasedMap<K,V>
- Returns:
- a new instance of Set that represents the keys in the Map
-
instantiateEntrySet
protected Set<Map.Entry<K,V>> instantiateEntrySet()
Factory pattern: Create a Set that represents the entries in the Map.- Overrides:
instantiateEntrySet
in classAbstractKeyBasedMap<K,V>
- Returns:
- a new instance of Set that represents the entries in the Map
-
instantiateValues
protected Collection<V> instantiateValues()
Factory pattern: Instantiate the values Collection.- Overrides:
instantiateValues
in classAbstractKeyBasedMap<K,V>
- Returns:
- a new instance of Collection that represents this Map's values
-
-