Package org.geotools.util
Class DerivedMap<BK,K,V>
- Object
-
- AbstractMap<K,V>
-
- DerivedMap<BK,K,V>
-
- Type Parameters:
BK- The type of keys in the backing map.K- The type of keys in this map.V- The type of values in both this map and the underlying map.
- All Implemented Interfaces:
Serializable,Map<K,V>
public abstract class DerivedMap<BK,K,V> extends AbstractMap<K,V> implements Serializable
A map whose keys are derived from an other map. The keys are derived only when requested, which make it possible to backup potentially large maps. Implementations need only to overridesbaseToDerived(BK)andderivedToBase(K)methods. This set do not supportsnullkey, sincenullis used when no mapping from base tothisexists. This class is serializable if the underlying base set is serializable too.This class is not thread-safe. Synchronizations (if wanted) are user's reponsability.
- Since:
- 2.0
- Author:
- Martin Desruisseaux (IRD)
- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from class AbstractMap
AbstractMap.SimpleEntry<K extends Object,V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object,V extends Object>
-
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected abstract KbaseToDerived(BK key)Transforms a key from the base map to a key in this map.booleancontainsKey(Object key)Returnstrueif this map contains a mapping for the specified key.booleancontainsValue(Object value)Returnstrueif this map maps one or more keys to this value.protected abstract BKderivedToBase(K key)Transforms a key from this derived map to a key in the base map.Set<Map.Entry<K,V>>entrySet()Returns a set view of the mappings contained in this map.Vget(Object key)Returns the value to which this map maps the specified key.booleanisEmpty()Returnstrueif this map contains no key-value mappings.Set<K>keySet()Returns a set view of the keys contained in this map.Vput(K key, V value)Associates the specified value with the specified key in this map.Vremove(Object key)Removes the mapping for this key from this map if present.intsize()Returns the number of key-value mappings in this map.Collection<V>values()Returns a collection view of the values contained in this map.-
Methods inherited from interface Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
-
-
-
Field Detail
-
base
protected final Map<BK,V> base
The base map whose keys are derived from.- See Also:
baseToDerived(BK),derivedToBase(K)
-
-
Method Detail
-
baseToDerived
protected abstract K baseToDerived(BK key)
Transforms a key from the base map to a key in this map. If there is no key in the derived map for the specified base key, then this method returnsnull.- Parameters:
key- A ley from the base map.- Returns:
- The key that this view should contains instead of
key, ornull.
-
derivedToBase
protected abstract BK derivedToBase(K key)
Transforms a key from this derived map to a key in the base map.- Parameters:
key- A key in this map.- Returns:
- The key stored in the base map.
-
size
public int size()
Returns the number of key-value mappings in this map.
-
isEmpty
public boolean isEmpty()
Returnstrueif this map contains no key-value mappings.
-
containsValue
public boolean containsValue(Object value)
Returnstrueif this map maps one or more keys to this value. The default implementation invokesbase.containsValue(value).- Specified by:
containsValuein interfaceMap<BK,K>- Overrides:
containsValuein classAbstractMap<K,V>- Returns:
trueif this map maps one or more keys to this value.
-
containsKey
public boolean containsKey(Object key)
Returnstrueif this map contains a mapping for the specified key. The default implementation invokesbase.containsKey(derivedToBase(key)).- Specified by:
containsKeyin interfaceMap<BK,K>- Overrides:
containsKeyin classAbstractMap<K,V>- Parameters:
key- key whose presence in this map is to be tested.- Returns:
trueif this map contains a mapping for the specified key.
-
get
public V get(Object key)
Returns the value to which this map maps the specified key. The default implementation invokesbase.get(derivedToBase(key)).
-
put
public V put(K key, V value) throws UnsupportedOperationException
Associates the specified value with the specified key in this map. The default implementation invokesbase.put(derivedToBase(key), value).- Specified by:
putin interfaceMap<BK,K>- Overrides:
putin classAbstractMap<K,V>- Parameters:
key- key with which the specified value is to be associated.value- value to be associated with the specified key.- Returns:
- previous value associated with specified key, or
nullif there was no mapping for key. - Throws:
UnsupportedOperationException- if the base map doesn't supports theputoperation.
-
remove
public V remove(Object key) throws UnsupportedOperationException
Removes the mapping for this key from this map if present. The default implementation invokesbase.remove(derivedToBase(key)).- Specified by:
removein interfaceMap<BK,K>- Overrides:
removein classAbstractMap<K,V>- Parameters:
key- key whose mapping is to be removed from the map.- Returns:
- previous value associated with specified key, or
nullif there was no entry for key. - Throws:
UnsupportedOperationException- if the base map doesn't supports theremoveoperation.
-
values
public Collection<V> values()
Returns a collection view of the values contained in this map.
-
-