Class SynchronizedCollectionMapDecorator<K,​V,​C extends java.util.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>, java.util.Map<K,​C>

    public class SynchronizedCollectionMapDecorator<K,​V,​C extends java.util.Collection<V>>
    extends SynchronizedMapDecorator<K,​C>
    implements CollectionMap<K,​V,​C>
    A collection map that wraps an existing collection map, providing access through the CollectionMap interface. All map access is synchronized on the provided synchronization object.
    Author:
    Garret Wilson
    • Field Detail

      • collectionMap

        protected final CollectionMap<K,​V,​C extends java.util.Collection<V>> collectionMap
        The collection map this class decorates.
    • Constructor Detail

      • SynchronizedCollectionMapDecorator

        public SynchronizedCollectionMapDecorator​(CollectionMap<K,​V,​C> collectionMap)
        Collection map constructor. The new instance of this class is used as a mutex.
        Parameters:
        collectionMap - The collection map this collection map should decorate.
        Throws:
        java.lang.NullPointerException - if the provided collection map is null.
      • SynchronizedCollectionMapDecorator

        public SynchronizedCollectionMapDecorator​(CollectionMap<K,​V,​C> collectionMap,
                                                  java.lang.Object mutex)
        Collection map constructor.
        Parameters:
        collectionMap - The collection map this collection map should decorate.
        mutex - The mutual exclusion synchronization object.
        Throws:
        java.lang.NullPointerException - if the provided collection map and/or mutex is null.
    • Method Detail

      • getCollection

        public C getCollection​(K key)
        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 java.util.Collection<V>>
        Parameters:
        key - The key in the map.
        Returns:
        The collection associated with the given key
        See Also:
        createCollection()
      • createCollection

        public C createCollection()
        Creates a collection in which to store values.
        Specified by:
        createCollection in interface CollectionMap<K,​V,​C extends java.util.Collection<V>>
        Implementation Note:
        This implementation is not synchronized.
        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 java.util.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 java.util.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 java.util.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 java.util.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:
        CollectionMap.getCollection(Object)
      • getItems

        public java.lang.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 java.util.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 java.util.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.