Class DecoratorReadWriteLockCollectionMap<K,V,C extends Collection<V>>

Type Parameters:
K - The type of key used in the map.
V - The type of value stored in the map.
C - The type of collection in which to store values in the map.
All Implemented Interfaces:
CollectionMap<K,V,C>, ReadWriteLockCollectionMap<K,V,C>, ReadWriteLockMap<K,C>, ReadWriteLock, Map<K,C>

public class DecoratorReadWriteLockCollectionMap<K,V,C extends Collection<V>> extends DecoratorReadWriteLockMap<K,C> implements ReadWriteLockCollectionMap<K,V,C>
A thread-safe collection map decorator that allows many readers but only one writer to access a map at a time. For operations that iterate over live map data, a read or write lock should be acquired before the call to acquire the data and held until the data is consumed.
Author:
Garret Wilson
  • Field Details

  • Constructor Details

    • DecoratorReadWriteLockCollectionMap

      public DecoratorReadWriteLockCollectionMap(CollectionMap<K,V,C> collectionMap)
      Collection map constructor with a default reentrant read/write lock.
      Parameters:
      collectionMap - The collection map this map should decorate.
      Throws:
      NullPointerException - if the provided collection map is null.
    • DecoratorReadWriteLockCollectionMap

      public DecoratorReadWriteLockCollectionMap(CollectionMap<K,V,C> collectionMap, ReadWriteLock lock)
      Collection map and read/write lock constructor.
      Parameters:
      collectionMap - The collection map this map should decorate.
      lock - The lock for controlling access to the map.
      Throws:
      NullPointerException - if the provided map and/or lock is null.
  • Method Details

    • getCollection

      public C getCollection(K key)
      Description copied from interface: CollectionMap
      Retrieves the collection of values associated with the given key. If no collection of values is associated with the key, one will be created and added to the map.
      Specified by:
      getCollection in interface CollectionMap<K,V,C extends Collection<V>>
      Parameters:
      key - The key in the map.
      Returns:
      The collection associated with the given key
      See Also:
    • createCollection

      public C createCollection()
      Description copied from interface: CollectionMap
      Creates a collection in which to store values.
      Specified by:
      createCollection in interface CollectionMap<K,V,C extends Collection<V>>
      Returns:
      The collections with the values stored.
    • hasItems

      public boolean hasItems(K key)
      Description copied from interface: CollectionMap
      Retrieves whether there are items in a collection associated with the key.
      Specified by:
      hasItems in interface CollectionMap<K,V,C extends Collection<V>>
      Parameters:
      key - The key in the map.
      Returns:
      true if there is at least one item associated with the key.
    • getItemCount

      public int getItemCount(K key)
      Description copied from interface: CollectionMap
      Retrieves the number of values in the collection, if any, associated with the key.
      Specified by:
      getItemCount in interface CollectionMap<K,V,C extends Collection<V>>
      Parameters:
      key - The key in the map.
      Returns:
      The number of items associated with the key.
    • addItem

      public void addItem(K key, V value)
      Description copied from interface: CollectionMap
      Adds a value to the collection of values associated with the key. If no collection of values is associated with the key, one will be created and added to the map.
      Specified by:
      addItem in interface CollectionMap<K,V,C extends Collection<V>>
      Parameters:
      key - The key in the map.
      value - The value to store in the collection.
    • getItem

      public V getItem(K key)
      Description copied from interface: CollectionMap
      Retrieves the first value from the collection of values, if any, associated with the key.
      Specified by:
      getItem in interface CollectionMap<K,V,C extends Collection<V>>
      Parameters:
      key - The key in the map.
      Returns:
      The first value in the collection, or null if there is no collection associated with the key or no values in the collection.
      See Also:
    • getItems

      public Iterable<V> getItems(K key)
      Description copied from interface: CollectionMap
      Retrieves iterable access to all items, if any, associated with the given key
      Specified by:
      getItems in interface CollectionMap<K,V,C extends Collection<V>>
      Parameters:
      key - The key in the map.
      Returns:
      An object that will iterate all items, if any, associated with the given key.
    • removeItem

      public boolean removeItem(K key, V value)
      Description copied from interface: CollectionMap
      Removes the first occurence of the given value from the collection of values, if any, associated with the key. If all items from the collection are removed, the collection itself is removed from the map.
      Specified by:
      removeItem in interface CollectionMap<K,V,C extends Collection<V>>
      Parameters:
      key - The key in the map.
      value - The item to be removed from the collection, if present.
      Returns:
      true if an item was removed as a result of this call.