Package com.globalmentor.collections
Class SynchronizedCollectionMapDecorator<K,V,C extends java.util.Collection<V>>
- java.lang.Object
-
- com.globalmentor.collections.SynchronizedMapDecorator<K,C>
-
- com.globalmentor.collections.SynchronizedCollectionMapDecorator<K,V,C>
-
- 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 theCollectionMap
interface. All map access is synchronized on the provided synchronization object.- Author:
- Garret Wilson
-
-
Field Summary
Fields Modifier and Type Field Description protected CollectionMap<K,V,C>
collectionMap
The collection map this class decorates.-
Fields inherited from class com.globalmentor.collections.SynchronizedMapDecorator
map, mutex
-
-
Constructor Summary
Constructors Constructor Description SynchronizedCollectionMapDecorator(CollectionMap<K,V,C> collectionMap)
Collection map constructor.SynchronizedCollectionMapDecorator(CollectionMap<K,V,C> collectionMap, java.lang.Object mutex)
Collection map constructor.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description void
addItem(K key, V value)
Adds a value to the collection of values associated with the key.C
createCollection()
Creates a collection in which to store values.C
getCollection(K key)
Retrieves the collection of values associated with the given key.V
getItem(K key)
Retrieves the first value from the collection of values, if any, associated with the key.int
getItemCount(K key)
Retrieves the number of values in the collection, if any, associated with the key.java.lang.Iterable<V>
getItems(K key)
Retrieves iterable access to all items, if any, associated with the given keyboolean
hasItems(K key)
Retrieves whether there are items in a collection associated with the key.boolean
removeItem(K key, V value)
Removes the first occurence of the given value from the collection of values, if any, associated with the key.-
Methods inherited from class com.globalmentor.collections.SynchronizedMapDecorator
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, equals, forEach, get, getOrDefault, hashCode, isEmpty, keySet, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size, values
-
-
-
-
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 isnull
.
-
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 isnull
.
-
-
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 interfaceCollectionMap<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 interfaceCollectionMap<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.
-
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 interfaceCollectionMap<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.
-
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 interfaceCollectionMap<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
-
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 interfaceCollectionMap<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.
-
-