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() and AbstractKeyBasedMap.get(Object). Read/write implementations must additionally implement AbstractKeyBasedMap.put(Object, Object) and AbstractKeyBasedMap.remove(Object). If the implementation has any cost of returning an "old value", such as is done by the Map.put(K, V) and Map.remove(Object), then the AbstractKeyBasedMap.putAll(java.util.Map) and AbstractKeyBasedMap.removeBlind(Object) methods should also be implemented. The only other obvious method for optimization is AbstractKeyBasedMap.clear(), if the implementation is able to do it in bulk.

Author:
2005.09.20 cp
  • Constructor Details

    • AbstractKeySetBasedMap

      public AbstractKeySetBasedMap()
  • Method Details

    • containsKey

      public boolean containsKey(Object oKey)
      Returns true if this map contains a mapping for the specified key.
      Specified by:
      containsKey in interface Map<K,V>
      Overrides:
      containsKey in class AbstractKeyBasedMap<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.
      Specified by:
      isEmpty in interface Map<K,V>
      Overrides:
      isEmpty in class AbstractKeyBasedMap<K,V>
      Returns:
      true if this map contains no key-value mappings
    • size

      public int size()
      Returns the number of key-value mappings in this map.
      Specified by:
      size in interface Map<K,V>
      Overrides:
      size in class AbstractKeyBasedMap<K,V>
      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 class AbstractKeyBasedMap<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 class AbstractKeyBasedMap<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 class AbstractKeyBasedMap<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 class AbstractKeyBasedMap<K,V>
      Returns:
      a new instance of Collection that represents this Map's values
    • instantiateKeyIterator

      protected Iterator<K> instantiateKeyIterator()
      Factory pattern: Create a mutable Iterator over the keys in the Map
      Returns:
      a new instance of Iterator that iterates over the keys in the Map and supports element removal