Package co.aikar.util
Class LoadingMap<K,V>
java.lang.Object
java.util.AbstractMap<K,V>
co.aikar.util.LoadingMap<K,V>
- Type Parameters:
K
- KeyV
- Value
- All Implemented Interfaces:
Map<K,
V>
Allows you to pass a Loader function that when a key is accessed that doesn't exists,
automatically loads the entry into the map by calling the loader Function.
.get() Will only return null if the Loader can return null.
You may pass any backing Map to use.
This class is not thread safe and should be wrapped with Collections.synchronizedMap on the OUTSIDE of the LoadingMap if needed.
Do not wrap the backing map with Collections.synchronizedMap.
-
Nested Class Summary
Modifier and TypeClassDescriptionstatic class
Due to java stuff, you will need to cast it to (Function) for some casesNested classes/interfaces inherited from class java.util.AbstractMap
AbstractMap.SimpleEntry<K extends Object,
V extends Object>, AbstractMap.SimpleImmutableEntry<K extends Object, V extends Object> -
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
clone()
boolean
containsKey
(@Nullable Object key) boolean
containsValue
(@Nullable Object value) entrySet()
boolean
int
hashCode()
boolean
isEmpty()
keySet()
newAutoMap
(@NotNull Map<K, V> backingMap, @NotNull Class<? extends V> valueClass) Creates a LoadingMap with an auto instantiating loader.newAutoMap
(@NotNull Map<K, V> backingMap, @Nullable Class<? extends K> keyClass, @NotNull Class<? extends V> valueClass) Creates a LoadingMap with an auto instantiating loader.newHashAutoMap
(@NotNull Class<? extends V> valueClass) newHashAutoMap
(@NotNull Class<? extends V> valueClass, int initialCapacity, float loadFactor) newHashAutoMap
(@Nullable Class<? extends K> keyClass, @NotNull Class<? extends V> valueClass) newHashAutoMap
(@Nullable Class<? extends K> keyClass, @NotNull Class<? extends V> valueClass, int initialCapacity, float loadFactor) newHashMap
(@NotNull Function<K, V> loader) Initializes an auto loading map using a HashMapnewHashMap
(@NotNull Function<K, V> loader, int initialCapacity) Initializes an auto loading map using a HashMapnewHashMap
(@NotNull Function<K, V> loader, int initialCapacity, float loadFactor) Initializes an auto loading map using a HashMapnewIdentityHashMap
(@NotNull Function<K, V> loader) Initializes an auto loading map using an Identity HashMapnewIdentityHashMap
(@NotNull Function<K, V> loader, int initialCapacity) Initializes an auto loading map using an Identity HashMapCreates a new LoadingMap with the specified map and loadervoid
int
size()
values()
Methods inherited from class java.util.AbstractMap
toString
Methods inherited from class java.lang.Object
finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.util.Map
compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll
-
Constructor Details
-
LoadingMap
Initializes an auto loading map using specified loader and backing map- Parameters:
backingMap
- Map to wraploader
- Loader
-
-
Method Details
-
of
@NotNull public static <K,V> @NotNull Map<K,V> of(@NotNull @NotNull Map<K, V> backingMap, @NotNull @NotNull Function<K, V> loader) Creates a new LoadingMap with the specified map and loader- Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
backingMap
- Actual map being used.loader
- Loader to use- Returns:
- Map
-
newAutoMap
@NotNull public static <K,V> @NotNull Map<K,V> newAutoMap(@NotNull @NotNull Map<K, V> backingMap, @Nullable @Nullable Class<? extends K> keyClass, @NotNull @NotNull Class<? extends V> valueClass) Creates a LoadingMap with an auto instantiating loader. Will auto construct class of of Value when not found Since this uses Reflection, It is more effecient to define your own static loader than using this helper, but if performance is not critical, this is easier.- Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
backingMap
- Actual map being used.keyClass
- Class used for the K genericvalueClass
- Class used for the V generic- Returns:
- Map that auto instantiates on .get()
-
newAutoMap
@NotNull public static <K,V> @NotNull Map<K,V> newAutoMap(@NotNull @NotNull Map<K, V> backingMap, @NotNull @NotNull Class<? extends V> valueClass) Creates a LoadingMap with an auto instantiating loader. Will auto construct class of of Value when not found Since this uses Reflection, It is more effecient to define your own static loader than using this helper, but if performance is not critical, this is easier.- Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
backingMap
- Actual map being used.valueClass
- Class used for the V generic- Returns:
- Map that auto instantiates on .get()
-
newHashAutoMap
@NotNull public static <K,V> @NotNull Map<K,V> newHashAutoMap(@Nullable @Nullable Class<? extends K> keyClass, @NotNull @NotNull Class<? extends V> valueClass) - Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
keyClass
- Class used for the K genericvalueClass
- Class used for the V generic- Returns:
- Map that auto instantiates on .get()
- See Also:
-
newHashAutoMap
@NotNull public static <K,V> @NotNull Map<K,V> newHashAutoMap(@NotNull @NotNull Class<? extends V> valueClass) - Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
valueClass
- Class used for the V generic- Returns:
- Map that auto instantiates on .get()
- See Also:
-
newHashAutoMap
@NotNull public static <K,V> @NotNull Map<K,V> newHashAutoMap(@Nullable @Nullable Class<? extends K> keyClass, @NotNull @NotNull Class<? extends V> valueClass, int initialCapacity, float loadFactor) - Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
keyClass
- Class used for the K genericvalueClass
- Class used for the V genericinitialCapacity
- Initial capacity to useloadFactor
- Load factor to use- Returns:
- Map that auto instantiates on .get()
- See Also:
-
newHashAutoMap
@NotNull public static <K,V> @NotNull Map<K,V> newHashAutoMap(@NotNull @NotNull Class<? extends V> valueClass, int initialCapacity, float loadFactor) - Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
valueClass
- Class used for the V genericinitialCapacity
- Initial capacity to useloadFactor
- Load factor to use- Returns:
- Map that auto instantiates on .get()
- See Also:
-
newHashMap
Initializes an auto loading map using a HashMap- Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
loader
- Loader to use- Returns:
- Map
-
newHashMap
@NotNull public static <K,V> @NotNull Map<K,V> newHashMap(@NotNull @NotNull Function<K, V> loader, int initialCapacity) Initializes an auto loading map using a HashMap- Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
loader
- Loader to useinitialCapacity
- Initial capacity to use- Returns:
- Map
-
newHashMap
@NotNull public static <K,V> @NotNull Map<K,V> newHashMap(@NotNull @NotNull Function<K, V> loader, int initialCapacity, float loadFactor) Initializes an auto loading map using a HashMap- Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
loader
- Loader to useinitialCapacity
- Initial capacity to useloadFactor
- Load factor to use- Returns:
- Map
-
newIdentityHashMap
@NotNull public static <K,V> @NotNull Map<K,V> newIdentityHashMap(@NotNull @NotNull Function<K, V> loader) Initializes an auto loading map using an Identity HashMap- Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
loader
- Loader to use- Returns:
- Map
-
newIdentityHashMap
@NotNull public static <K,V> @NotNull Map<K,V> newIdentityHashMap(@NotNull @NotNull Function<K, V> loader, int initialCapacity) Initializes an auto loading map using an Identity HashMap- Type Parameters:
K
- Key Type of the MapV
- Value Type of the Map- Parameters:
loader
- Loader to useinitialCapacity
- Initial capacity to use- Returns:
- Map
-
size
public int size() -
isEmpty
public boolean isEmpty() -
containsKey
- Specified by:
containsKey
in interfaceMap<K,
V> - Overrides:
containsKey
in classAbstractMap<K,
V>
-
containsValue
- Specified by:
containsValue
in interfaceMap<K,
V> - Overrides:
containsValue
in classAbstractMap<K,
V>
-
get
-
put
-
remove
-
putAll
-
clear
public void clear() -
keySet
-
values
-
equals
-
hashCode
public int hashCode() -
entrySet
-
clone
- Overrides:
clone
in classAbstractMap<K,
V>
-