Class TransformingMap<K,InternalV,ExternalV>
- java.lang.Object
-
- java.util.AbstractMap<K,ExternalV>
-
- com.electronwill.nightconfig.core.utils.TransformingMap<K,InternalV,ExternalV>
-
- All Implemented Interfaces:
java.util.Map<K,ExternalV>
public final class TransformingMap<K,InternalV,ExternalV> extends java.util.AbstractMap<K,ExternalV>A TransformingMap contains an internalMap<K, InternalV>values, and exposes the features of aMap<K, ExternalV>applying transformations to the values.The transformations are applied "just in time", that is, the values are converted only when they are used, not during the construction of the TransformingMap.
For instance, if you have a
Map<String, String>and you want to convert its values "just in time" to integers, you use aTransformingMap<String, String, Integer>. To get one, you create these three functions:- one that converts a String to an Integer: that's the parse transformation. It converts an Integer read from the internal map to a String.
- one that converts an Integer to a String: that's the write transformation. It converts a String given to the TransformingMap to an Integer.
- one that converts an Object to another Object: that's the search transformation. It is used
(mainly) by the
containsKey(Object)method of the TransformingMap. If its argument is an Integer then it should convert it to an String in the same way as the write transformation. Otherwise, it is free to try to convert it to a String if possible, or not to.
-
-
Constructor Summary
Constructors Constructor Description TransformingMap(java.util.Map<K,InternalV> map, java.util.function.Function<? super InternalV,? extends ExternalV> readTransformation, java.util.function.Function<? super ExternalV,? extends InternalV> writeTransformation, java.util.function.Function<java.lang.Object,java.lang.Object> searchTransformation)Create a new TransformingMap.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclear()ExternalVcompute(K key, java.util.function.BiFunction<? super K,? super ExternalV,? extends ExternalV> remappingFunction)ExternalVcomputeIfAbsent(K key, java.util.function.Function<? super K,? extends ExternalV> mappingFunction)ExternalVcomputeIfPresent(K key, java.util.function.BiFunction<? super K,? super ExternalV,? extends ExternalV> remappingFunction)booleancontainsKey(java.lang.Object key)booleancontainsValue(java.lang.Object value)java.util.Set<java.util.Map.Entry<K,ExternalV>>entrySet()voidforEach(java.util.function.BiConsumer<? super K,? super ExternalV> action)ExternalVget(java.lang.Object key)ExternalVgetOrDefault(java.lang.Object key, ExternalV defaultValue)booleanisEmpty()java.util.Set<K>keySet()ExternalVmerge(K key, ExternalV value, java.util.function.BiFunction<? super ExternalV,? super ExternalV,? extends ExternalV> remappingFunction)ExternalVput(K key, ExternalV value)voidputAll(java.util.Map<? extends K,? extends ExternalV> m)ExternalVputIfAbsent(K key, ExternalV value)ExternalVremove(java.lang.Object key)booleanremove(java.lang.Object key, java.lang.Object value)ExternalVreplace(K key, ExternalV value)booleanreplace(K key, ExternalV oldValue, ExternalV newValue)voidreplaceAll(java.util.function.BiFunction<? super K,? super ExternalV,? extends ExternalV> function)intsize()java.util.Collection<ExternalV>values()
-
-
-
Constructor Detail
-
TransformingMap
public TransformingMap(java.util.Map<K,InternalV> map, java.util.function.Function<? super InternalV,? extends ExternalV> readTransformation, java.util.function.Function<? super ExternalV,? extends InternalV> writeTransformation, java.util.function.Function<java.lang.Object,java.lang.Object> searchTransformation)
Create a new TransformingMap.- Parameters:
map- the internal map to usereadTransformation- the parse transformation (see javadoc of the class)writeTransformation- the write transformation (see javadoc of the class)searchTransformation- the search transformation (see javadoc of the class)
-
-
Method Detail
-
size
public int size()
-
isEmpty
public boolean isEmpty()
-
containsKey
public boolean containsKey(java.lang.Object key)
-
containsValue
public boolean containsValue(java.lang.Object value)
-
get
public ExternalV get(java.lang.Object key)
-
remove
public ExternalV remove(java.lang.Object key)
-
clear
public void clear()
-
keySet
public java.util.Set<K> keySet()
-
values
public java.util.Collection<ExternalV> values()
-
replaceAll
public void replaceAll(java.util.function.BiFunction<? super K,? super ExternalV,? extends ExternalV> function)
-
remove
public boolean remove(java.lang.Object key, java.lang.Object value)
-
computeIfAbsent
public ExternalV computeIfAbsent(K key, java.util.function.Function<? super K,? extends ExternalV> mappingFunction)
-
computeIfPresent
public ExternalV computeIfPresent(K key, java.util.function.BiFunction<? super K,? super ExternalV,? extends ExternalV> remappingFunction)
-
compute
public ExternalV compute(K key, java.util.function.BiFunction<? super K,? super ExternalV,? extends ExternalV> remappingFunction)
-
-