Top Description Inners Fields Constructors Methods
org.apache.commons.collections4.map

public Class CompositeMap<K, V>

extends AbstractIterableMap<K, V>
implements Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable
Type Parameters
<K>
the type of the keys in this map
<V>
the type of the values in this map
Imports
java.io.Serializable, java.util.Collection, .Map, .Set, org.apache.commons.collections4.set.CompositeSet, org.apache.commons.collections4.CollectionUtils, org.apache.commons.collections4.collection.CompositeCollection

Decorates a map of other maps to provide a single unified view.

Changes made to this map will actually be made on the decorated map. Add and remove operations require the use of a pluggable strategy. If no strategy is provided then add and remove are unsupported.

Note that CompositeMap is not synchronized and is not thread-safe. If you wish to use this map from multiple threads concurrently, you must use appropriate synchronization. The simplest approach is to wrap this map using java.util.Collections#synchronizedMap(Map). This class may throw exceptions when accessed by concurrent threads without synchronization.

Since
3.0

Nested and Inner Type Summary

Modifier and TypeClass and Description
public static interface
CompositeMap.MapMutator<
the type of the keys in the map
K
,
the type of the values in the map
V
>

This interface allows definition for all of the indeterminate mutators in a CompositeMap, as well as providing a hook for callbacks on key collisions.

Field Summary

Modifier and TypeField and Description
private Map<K, V>[]
composite

Array of all maps in the composite

private CompositeMap.MapMutator<K, V>
mutator

Handle mutation operations

private static final long
serialVersionUID

Serialization version

Constructor Summary

AccessConstructor and Description
public
CompositeMap()

Create a new, empty, CompositeMap.

public
CompositeMap(final Map<K, V>
the first Map to be composited
one
,
final Map<K, V>
the second Map to be composited
two
)

Create a new CompositeMap with two composited Map instances.

public
CompositeMap(final Map<K, V>
the first Map to be composited
one
,
final Map<K, V>
the second Map to be composited
two
,
final CompositeMap.MapMutator<K, V>
MapMutator to be used for mutation operations
mutator
)

Create a new CompositeMap with two composited Map instances.

public
CompositeMap(final Map<K, V>...
the Maps to be composited
composite
)

Create a new CompositeMap which composites all of the Map instances in the argument.

public
CompositeMap(final Map<K, V>[]
Maps to be composited
composite
,
final CompositeMap.MapMutator<K, V>
MapMutator to be used for mutation operations
mutator
)

Create a new CompositeMap which composites all of the Map instances in the argument.

Method Summary

Modifier and TypeMethod and Description
public synchronized void
addComposited(final Map<K, V>
the Map to be added to the composite
map
)

Add an additional Map to the composite.

public void
clear()

Implements java.util.Map.clear, org.apache.commons.collections4.Put.clear.

Calls clear() on all composited Maps.
public boolean

Returns:

true if this map contains a mapping for the specified key.
containsKey
(final Object
key whose presence in this map is to be tested.
key
)

Implements java.util.Map.containsKey, org.apache.commons.collections4.Get.containsKey.

Returns true if this map contains a mapping for the specified key.
public boolean

Returns:

true if this map maps one or more keys to the specified value.
containsValue
(final Object
value whose presence in this map is to be tested.
value
)

Implements java.util.Map.containsValue, org.apache.commons.collections4.Get.containsValue.

Returns true if this map maps one or more keys to the specified value.
public Set<Map.Entry<K, V>>

Returns:

a set view of the mappings contained in this map.
entrySet
()

Implements java.util.Map.entrySet, org.apache.commons.collections4.Get.entrySet.

Returns a set view of the mappings contained in this map.
public boolean

Returns:

true if the maps are equal
equals
(final Object
the object to compare to
obj
)

Overrides java.lang.Object.equals.

Implements java.util.Map.equals.

Checks if this Map equals another as per the Map specification.
public V

Returns:

the value to which this map maps the specified key, or null if the map contains no mapping for this key.
get
(final Object
key whose associated value is to be returned.
key
)

Implements java.util.Map.get, org.apache.commons.collections4.Get.get.

Returns the value to which this map maps the specified key.
public int
hashCode()

Overrides java.lang.Object.hashCode.

Implements java.util.Map.hashCode.

Gets a hash code for the Map as per the Map specification.
public boolean

Returns:

true if this map contains no key-value mappings.
isEmpty
()

Implements java.util.Map.isEmpty, org.apache.commons.collections4.Get.isEmpty.

Returns true if this map contains no key-value mappings.
public Set<K>

Returns:

a set view of the keys contained in this map.
keySet
()

Implements java.util.Map.keySet, org.apache.commons.collections4.Get.keySet.

Returns a set view of the keys contained in this map.
public V

Returns:

previous value associated with specified key, or null if there was no mapping for key. A null return can also indicate that the map previously associated null with the specified key, if the implementation supports null values.
put
(final K
key with which the specified value is to be associated.
key
,
final V
value to be associated with the specified key.
value
)

Implements java.util.Map.put, org.apache.commons.collections4.Put.put.

Associates the specified value with the specified key in this map (optional operation).
public void
putAll(final Map<? extends K, ? extends V>
Mappings to be stored in this map.
map
)

Implements java.util.Map.putAll, org.apache.commons.collections4.Put.putAll.

Copies all of the mappings from the specified map to this map (optional operation).
public V

Returns:

previous value associated with specified key, or null if there was no mapping for key.
remove
(final Object
key whose mapping is to be removed from the map.
key
)

Implements java.util.Map.remove, org.apache.commons.collections4.Get.remove.

Removes the mapping for this key from this map if it is present (optional operation).
public synchronized Map<K, V>

Returns:

The removed Map or null if map is not in the composite
removeComposited
(final Map<K, V>
the Map to be removed from the composite
map
)

Remove a Map from the composite.

public void
setMutator(final CompositeMap.MapMutator<K, V>
the MapMutator to be used for mutation delegation
mutator
)

Specify the MapMutator to be used by mutation operations.

public int

Returns:

the number of key-value mappings in this map.
size
()

Implements java.util.Map.size, org.apache.commons.collections4.Get.size.

Returns the number of key-value mappings in this map.
public Collection<V>

Returns:

a collection view of the values contained in this map.
values
()

Implements java.util.Map.values, org.apache.commons.collections4.Get.values.

Returns a collection view of the values contained in this map.
Inherited from org.apache.commons.collections4.map.AbstractIterableMap:
mapIterator

Field Detail

compositeback to summary
private Map<K, V>[] composite

Array of all maps in the composite

mutatorback to summary
private CompositeMap.MapMutator<K, V> mutator

Handle mutation operations

serialVersionUIDback to summary
private static final long serialVersionUID

Serialization version

Constructor Detail

CompositeMapback to summary
public CompositeMap()

Create a new, empty, CompositeMap.

Annotations
@SuppressWarnings:unchecked
CompositeMapback to summary
public CompositeMap(final Map<K, V> one, final Map<K, V> two)

Create a new CompositeMap with two composited Map instances.

Parameters
one:Map<K, V>

the first Map to be composited

two:Map<K, V>

the second Map to be composited

Annotations
@SuppressWarnings:unchecked
Exceptions
IllegalArgumentException:
if there is a key collision
CompositeMapback to summary
public CompositeMap(final Map<K, V> one, final Map<K, V> two, final CompositeMap.MapMutator<K, V> mutator)

Create a new CompositeMap with two composited Map instances.

Parameters
one:Map<K, V>

the first Map to be composited

two:Map<K, V>

the second Map to be composited

mutator:CompositeMap.MapMutator<K, V>

MapMutator to be used for mutation operations

Annotations
@SuppressWarnings:unchecked
CompositeMapback to summary
public CompositeMap(final Map<K, V>... composite)

Create a new CompositeMap which composites all of the Map instances in the argument. It copies the argument array, it does not use it directly.

Parameters
composite:Map<K, V>[]

the Maps to be composited

Exceptions
IllegalArgumentException:
if there is a key collision
CompositeMapback to summary
public CompositeMap(final Map<K, V>[] composite, final CompositeMap.MapMutator<K, V> mutator)

Create a new CompositeMap which composites all of the Map instances in the argument. It copies the argument array, it does not use it directly.

Parameters
composite:Map<K, V>[]

Maps to be composited

mutator:CompositeMap.MapMutator<K, V>

MapMutator to be used for mutation operations

Annotations
@SuppressWarnings:unchecked

Method Detail

addCompositedback to summary
public synchronized void addComposited(final Map<K, V> map) throws IllegalArgumentException

Add an additional Map to the composite.

Parameters
map:Map<K, V>

the Map to be added to the composite

Annotations
@SuppressWarnings:unchecked
Exceptions
IllegalArgumentException:
if there is a key collision and there is no MapMutator set to handle it.
clearback to summary
public void clear()

Implements java.util.Map.clear, org.apache.commons.collections4.Put.clear.

Calls clear() on all composited Maps.

Annotations
@Override
Exceptions
UnsupportedOperationException:
if any of the composited Maps do not support clear()
containsKeyback to summary
public boolean containsKey(final Object key)

Implements java.util.Map.containsKey, org.apache.commons.collections4.Get.containsKey.

Returns true if this map contains a mapping for the specified key. More formally, returns true if and only if this map contains at a mapping for a key k such that (key==null ? k==null : key.equals(k)). (There can be at most one such mapping.)

Parameters
key:Object

key whose presence in this map is to be tested.

Returns:boolean

true if this map contains a mapping for the specified key.

Annotations
@Override
Exceptions
ClassCastException:
if the key is of an inappropriate type for this map (optional).
NullPointerException:
if the key is null and this map does not not permit null keys (optional).
containsValueback to summary
public boolean containsValue(final Object value)

Implements java.util.Map.containsValue, org.apache.commons.collections4.Get.containsValue.

Returns true if this map maps one or more keys to the specified value. More formally, returns true if and only if this map contains at least one mapping to a value v such that (value==null ? v==null : value.equals(v)). This operation will probably require time linear in the map size for most implementations of the Map interface.

Parameters
value:Object

value whose presence in this map is to be tested.

Returns:boolean

true if this map maps one or more keys to the specified value.

Annotations
@Override
Exceptions
ClassCastException:
if the value is of an inappropriate type for this map (optional).
NullPointerException:
if the value is null and this map does not not permit null values (optional).
entrySetback to summary
public Set<Map.Entry<K, V>> entrySet()

Implements java.util.Map.entrySet, org.apache.commons.collections4.Get.entrySet.

Returns a set view of the mappings contained in this map. Each element in the returned set is a Map.Entry. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa. If the map is modified while an iteration over the set is in progress, the results of the iteration are undefined. The set supports element removal, which removes the corresponding mapping from the map, via the Iterator.remove, Set.remove, removeAll, retainAll and clear operations. It does not support the add or addAll operations.

This implementation returns a CompositeSet which composites the entry sets from all of the composited maps.

Returns:Set<Map.Entry<K, V>>

a set view of the mappings contained in this map.

Annotations
@Override
See Also
CompositeSet
equalsback to summary
public boolean equals(final Object obj)

Overrides java.lang.Object.equals.

Implements java.util.Map.equals.

Checks if this Map equals another as per the Map specification.

Parameters
obj:Object

the object to compare to

Returns:boolean

true if the maps are equal

Annotations
@Override
getback to summary
public V get(final Object key)

Implements java.util.Map.get, org.apache.commons.collections4.Get.get.

Returns the value to which this map maps the specified key. Returns null if the map contains no mapping for this key. A return value of null does not necessarily indicate that the map contains no mapping for the key; it's also possible that the map explicitly maps the key to null. The containsKey operation may be used to distinguish these two cases.

More formally, if this map contains a mapping from a key k to a value v such that (key==null ? k==null : key.equals(k)), then this method returns v; otherwise it returns null. (There can be at most one such mapping.)

Parameters
key:Object

key whose associated value is to be returned.

Returns:V

the value to which this map maps the specified key, or null if the map contains no mapping for this key.

Annotations
@Override
Exceptions
ClassCastException:
if the key is of an inappropriate type for this map (optional).
NullPointerException:
key is null and this map does not not permit null keys (optional).
See Also
containsKey(Object)
hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Implements java.util.Map.hashCode.

Doc from java.util.Map.hashCode.

Gets a hash code for the Map as per the Map specification. Returns the hash code value for this map. The hash code of a map is defined to be the sum of the hash codes of each entry in the map's entrySet() view. This ensures that m1.equals(m2) implies that m1.hashCode()==m2.hashCode() for any two maps m1 and m2, as required by the general contract of Object#hashCode.

Returns:int

the hash code value for this map

Annotations
@Override
isEmptyback to summary
public boolean isEmpty()

Implements java.util.Map.isEmpty, org.apache.commons.collections4.Get.isEmpty.

Returns true if this map contains no key-value mappings.

Returns:boolean

true if this map contains no key-value mappings.

Annotations
@Override
keySetback to summary
public Set<K> keySet()

Implements java.util.Map.keySet, org.apache.commons.collections4.Get.keySet.

Returns a set view of the keys contained in this map. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa. If the map is modified while an iteration over the set is in progress, the results of the iteration are undefined. The set supports element removal, which removes the corresponding mapping from the map, via the Iterator.remove, Set.remove, removeAll retainAll, and clear operations. It does not support the add or addAll operations.

This implementation returns a CompositeSet which composites the key sets from all of the composited maps.

Returns:Set<K>

a set view of the keys contained in this map.

Annotations
@Override
putback to summary
public V put(final K key, final V value)

Implements java.util.Map.put, org.apache.commons.collections4.Put.put.

Associates the specified value with the specified key in this map (optional operation). If the map previously contained a mapping for this key, the old value is replaced by the specified value. (A map m is said to contain a mapping for a key k if and only if m.containsKey(k) would return true.))

Parameters
key:K

key with which the specified value is to be associated.

value:V

value to be associated with the specified key.

Returns:V

previous value associated with specified key, or null if there was no mapping for key. A null return can also indicate that the map previously associated null with the specified key, if the implementation supports null values.

Annotations
@Override
Exceptions
UnsupportedOperationException:
if no MapMutator has been specified
ClassCastException:
if the class of the specified key or value prevents it from being stored in this map.
IllegalArgumentException:
if some aspect of this key or value prevents it from being stored in this map.
NullPointerException:
this map does not permit null keys or values, and the specified key or value is null.
putAllback to summary
public void putAll(final Map<? extends K, ? extends V> map)

Implements java.util.Map.putAll, org.apache.commons.collections4.Put.putAll.

Copies all of the mappings from the specified map to this map (optional operation). The effect of this call is equivalent to that of calling put(k, v) on this map once for each mapping from key k to value v in the specified map. The behavior of this operation is unspecified if the specified map is modified while the operation is in progress.

Parameters
map:Map<? extends K, ? extends V>

Mappings to be stored in this map.

Annotations
@Override
Exceptions
UnsupportedOperationException:
if the putAll method is not supported by this map.
ClassCastException:
if the class of a key or value in the specified map prevents it from being stored in this map.
IllegalArgumentException:
some aspect of a key or value in the specified map prevents it from being stored in this map.
NullPointerException:
the specified map is null, or if this map does not permit null keys or values, and the specified map contains null keys or values.
removeback to summary
public V remove(final Object key)

Implements java.util.Map.remove, org.apache.commons.collections4.Get.remove.

Removes the mapping for this key from this map if it is present (optional operation). More formally, if this map contains a mapping from key k to value v such that (key==null ? k==null : key.equals(k)), that mapping is removed. (The map can contain at most one such mapping.)

Returns the value to which the map previously associated the key, or null if the map contained no mapping for this key. (A null return can also indicate that the map previously associated null with the specified key if the implementation supports null values.) The map will not contain a mapping for the specified key once the call returns.

Parameters
key:Object

key whose mapping is to be removed from the map.

Returns:V

previous value associated with specified key, or null if there was no mapping for key.

Annotations
@Override
Exceptions
ClassCastException:
if the key is of an inappropriate type for the composited map (optional).
NullPointerException:
if the key is null and the composited map does not not permit null keys (optional).
UnsupportedOperationException:
if the remove method is not supported by the composited map containing the key
removeCompositedback to summary
public synchronized Map<K, V> removeComposited(final Map<K, V> map)

Remove a Map from the composite.

Parameters
map:Map<K, V>

the Map to be removed from the composite

Returns:Map<K, V>

The removed Map or null if map is not in the composite

Annotations
@SuppressWarnings:unchecked
setMutatorback to summary
public void setMutator(final CompositeMap.MapMutator<K, V> mutator)

Specify the MapMutator to be used by mutation operations.

Parameters
mutator:CompositeMap.MapMutator<K, V>

the MapMutator to be used for mutation delegation

sizeback to summary
public int size()

Implements java.util.Map.size, org.apache.commons.collections4.Get.size.

Returns the number of key-value mappings in this map. If the map contains more than Integer.MAX_VALUE elements, returns Integer.MAX_VALUE.

Returns:int

the number of key-value mappings in this map.

Annotations
@Override
valuesback to summary
public Collection<V> values()

Implements java.util.Map.values, org.apache.commons.collections4.Get.values.

Returns a collection view of the values contained in this map. The collection is backed by the map, so changes to the map are reflected in the collection, and vice-versa. If the map is modified while an iteration over the collection is in progress, the results of the iteration are undefined. The collection supports element removal, which removes the corresponding mapping from the map, via the Iterator.remove, Collection.remove, removeAll, retainAll and clear operations. It does not support the add or addAll operations.

Returns:Collection<V>

a collection view of the values contained in this map.

Annotations
@Override
org.apache.commons.collections4.map back to summary

public Interface CompositeMap.MapMutator<K, V>

extends Serializable
Type Parameters
<K>
the type of the keys in the map
<V>
the type of the values in the map

This interface allows definition for all of the indeterminate mutators in a CompositeMap, as well as providing a hook for callbacks on key collisions.

Method Summary

Modifier and TypeMethod and Description
public V

Returns:

previous value associated with specified key, or null if there was no mapping for key. A null return can also indicate that the map previously associated null with the specified key, if the implementation supports null values.
put
(CompositeMap<K, V>
the CompositeMap which is being modified
map
,
Map<K, V>[]
array of Maps in the CompositeMap being modified
composited
,
K
key with which the specified value is to be associated.
key
,
V
value to be associated with the specified key.
value
)

Called when the CompositeMap.put() method is invoked.

public void
putAll(CompositeMap<K, V>
the CompositeMap which is being modified
map
,
Map<K, V>[]
array of Maps in the CompositeMap being modified
composited
,
Map<? extends K, ? extends V>
Mappings to be stored in this CompositeMap
mapToAdd
)

Called when the CompositeMap.putAll() method is invoked.

public void
resolveCollision(CompositeMap<K, V>
the CompositeMap with the collision
composite
,
Map<K, V>
the Map already in the composite which contains the offending key
existing
,
Map<K, V>
the Map being added
added
,
Collection<K>
the intersection of the keysets of the existing and added maps
intersect
)

Called when adding a new Composited Map results in a key collision.

Method Detail

putback to summary
public V put(CompositeMap<K, V> map, Map<K, V>[] composited, K key, V value)

Called when the CompositeMap.put() method is invoked.

Parameters
map:CompositeMap<K, V>

the CompositeMap which is being modified

composited:Map<K, V>[]

array of Maps in the CompositeMap being modified

key:K

key with which the specified value is to be associated.

value:V

value to be associated with the specified key.

Returns:V

previous value associated with specified key, or null if there was no mapping for key. A null return can also indicate that the map previously associated null with the specified key, if the implementation supports null values.

Exceptions
UnsupportedOperationException:
if not defined
ClassCastException:
if the class of the specified key or value prevents it from being stored in this map.
IllegalArgumentException:
if some aspect of this key or value prevents it from being stored in this map.
NullPointerException:
this map does not permit null keys or values, and the specified key or value is null.
putAllback to summary
public void putAll(CompositeMap<K, V> map, Map<K, V>[] composited, Map<? extends K, ? extends V> mapToAdd)

Called when the CompositeMap.putAll() method is invoked.

Parameters
map:CompositeMap<K, V>

the CompositeMap which is being modified

composited:Map<K, V>[]

array of Maps in the CompositeMap being modified

mapToAdd:Map<? extends K, ? extends V>

Mappings to be stored in this CompositeMap

Exceptions
UnsupportedOperationException:
if not defined
ClassCastException:
if the class of the specified key or value prevents it from being stored in this map.
IllegalArgumentException:
if some aspect of this key or value prevents it from being stored in this map.
NullPointerException:
this map does not permit null keys or values, and the specified key or value is null.
resolveCollisionback to summary
public void resolveCollision(CompositeMap<K, V> composite, Map<K, V> existing, Map<K, V> added, Collection<K> intersect)

Called when adding a new Composited Map results in a key collision.

Parameters
composite:CompositeMap<K, V>

the CompositeMap with the collision

existing:Map<K, V>

the Map already in the composite which contains the offending key

added:Map<K, V>

the Map being added

intersect:Collection<K>

the intersection of the keysets of the existing and added maps