java.lang.Object
org.klojang.util.collection.EnumToIntMap<K>
- Type Parameters:
K
- The type of the enum class
- All Implemented Interfaces:
org.klojang.check.aux.Emptyable
public final class EnumToIntMap<K extends Enum<K>>
extends Object
implements org.klojang.check.aux.Emptyable
A fast enum-to-int map. The map is backed by an int array with the same length as
the number of constants in the
enum
class. One integer must be designated
to signify the absence of a key. By default, this is
Integer.MIN_VALUE
. All elements in the int
array are initialized
to this value — meaning the map is empty. It is not allowed to put
a
key with this value to the map, as is would in effect amount to
removing that key from the map. It is also not allowed to pass this value
to containsValue()
. In both cases an
IllegalArgumentException
is thrown. Empty enum classes (i.e. enum classes
without enum constants) are not supported.-
Constructor Summary
ConstructorDescriptionEnumToIntMap
(Class<K> enumClass) Creates a new emptyEnumToIntMap
for the specified enum class usingInteger.MIN_VALUE
as the key-absent-value value.EnumToIntMap
(Class<K> enumClass, int keyAbsentValue) Creates a newEnumToIntMap
for the specified enum class with the specified integer as the key-absent-value value.EnumToIntMap
(Class<K> enumClass, int keyAbsentValue, ToIntFunction<K> initializer) Creates a newEnumToIntMap
with the specified key-absent-value value and the specified initializer function.EnumToIntMap
(Class<K> enumClass, ToIntFunction<K> initializer) Creates a newEnumToIntMap
usingInteger.MIN_VALUE
as the key-absent-value value and with its keys initialized using the specified initializer function.EnumToIntMap
(EnumToIntMap<K> other) Instantiates a newEnumToIntMap
with the same key-value mappings as the specifiedEnumToIntMap
and with the same key-absent-value value.EnumToIntMap
(EnumToIntMap<K> other, int keyAbsentValue) Instantiates a newEnumToIntMap
with the same key-value mappings as the specifiedEnumToIntMap
, but (potentially) with a new key-absent-value. -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Removes all mappings from this map.boolean
containsKey
(K key) Returnstrue
if this map contains a mapping for the specified key.boolean
containsValue
(int val) Returnstrue
if this map maps one or more keys to the specified value.entrySet()
Returns a Set view of the mappings contained in this map.Returns the type of the enum keys in this map.boolean
Returnstrue
if the argument is anEnumToIntMap
for the same enum class and if it contains the same key-value mappings.void
forEach
(ObjIntConsumer<K> action) Performs the given action for each entry in this map until all entries have been processed or the action throws an exception.int
Returns the value to which the specified enum constant is mapped, or the key-absent-value if this map contains no mapping for the key.int
getOrDefault
(K key, int dfault) Returns the value associated with the specified enum constant ordfault
if the map did not contain an entry for the specified enum constant.int
hashCode()
Returns anIntList
containing the values of this map.boolean
isEmpty()
Returnstrue
if this map contains no key-value mappings,false
otherwise.int
Returns the integer used to signify the absence of a key.keySet()
Returns aSet
view of the keys contained in this map.int
Associates the specified value with the specified key in this map.void
Adds all entries of the specified map to this map.void
putAll
(EnumToIntMap<K> other) Adds all entries of the specified map to this map, overwriting any previous values.int
Removes the mapping for a key from this map if it is present.Much likeput
, but provides a fluent API for adding entries to the map.int
size()
Returns the number of key-value mappings in this map.Returns an immutable, fully-generic version of this map.toString()
values()
Returns aCollection
view of the values contained in this map.Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface org.klojang.check.aux.Emptyable
isDeepNotEmpty
-
Constructor Details
-
EnumToIntMap
Creates a new emptyEnumToIntMap
for the specified enum class usingInteger.MIN_VALUE
as the key-absent-value value. All elements in the backing array will be initialized to this value (meaning that the map is empty).- Parameters:
enumClass
- The type of the enum class
-
EnumToIntMap
Creates a newEnumToIntMap
for the specified enum class with the specified integer as the key-absent-value value. All elements in the backing array will be initialized to this value (meaning that the map is empty).- Parameters:
enumClass
- The type of the enum classkeyAbsentValue
- The value used to signify the absence of a key
-
EnumToIntMap
Creates a newEnumToIntMap
usingInteger.MIN_VALUE
as the key-absent-value value and with its keys initialized using the specified initializer function. For example:EnumToIntMap<DayOfWeek> map = new EnumToIntMap<>(DayOfWeek.class, k -> k.ordinal() + 1);
- Parameters:
enumClass
- The type of the enum classinitializer
- A function called to initialize the array elements
-
EnumToIntMap
Creates a newEnumToIntMap
with the specified key-absent-value value and the specified initializer function.- Parameters:
enumClass
- The type of the enum classkeyAbsentValue
- The value used to signify the absence of a keyinitializer
- A function called to initialize the array elements
-
EnumToIntMap
Instantiates a newEnumToIntMap
with the same key-value mappings as the specifiedEnumToIntMap
and with the same key-absent-value value.- Parameters:
other
- TheEnumToIntMap
whose key-value mappings to copy
-
EnumToIntMap
Instantiates a newEnumToIntMap
with the same key-value mappings as the specifiedEnumToIntMap
, but (potentially) with a new key-absent-value.- Parameters:
other
- TheEnumToIntMap
whose key-value mappings to copykeyAbsentValue
- The value used to signify the absence of a key
-
-
Method Details
-
containsKey
Returnstrue
if this map contains a mapping for the specified key.- Parameters:
key
- The enum constant- Returns:
- Whether the map contains an entry for the enum constant
- See Also:
-
containsValue
public boolean containsValue(int val) Returnstrue
if this map maps one or more keys to the specified value. It is not permitted to search for the key-absent-value value. AnIllegalArgumentException
is thrown if you do.- Parameters:
val
- The value- Returns:
- Whether the map contains the value
- See Also:
-
get
Returns the value to which the specified enum constant is mapped, or the key-absent-value if this map contains no mapping for the key. (A regularMap
would returnnull
in the latter case.)- Parameters:
key
- The key whose associated value is to be returned- Returns:
- the value to which the specified key is mapped, or the key-absent-value if this map contains no mapping for the key
- See Also:
-
getOrDefault
Returns the value associated with the specified enum constant ordfault
if the map did not contain an entry for the specified enum constant.- Parameters:
key
- The key to retrieve the value of.dfault
- The integer to return if the map did not contain the key- Returns:
- the value associated with the key or
dfault
- See Also:
-
put
Associates the specified value with the specified key in this map.- Parameters:
key
- The keyval
- The value- Returns:
- the previous value associated with the specified enum constant or the key-absent-value value if the map did not contain an entry for the enum constant yet.
- See Also:
-
set
Much likeput
, but provides a fluent API for adding entries to the map.- Parameters:
key
- The keyval
- The value- Returns:
- This instance
-
putAll
Adds all entries of the specified map to this map, overwriting any previous values. The source map must not contain the key-absent-value of this map. AnIllegalArgumentException
is thrown if it does.- Parameters:
other
- TheEnumToIntMap
whose key-value mappings to copy
-
putAll
Adds all entries of the specified map to this map. This method acts as a bridge to fully-generic map implementations. The source map must not contain the key-absent-value of this map. AnIllegalArgumentException
is thrown if it does.- Parameters:
other
- TheMap
whose key-value mappings to copy
-
toGenericMap
Returns an immutable, fully-generic version of this map.- Returns:
- an immutable, fully-generic version of this map
-
remove
Removes the mapping for a key from this map if it is present.- Parameters:
key
- The key- Returns:
- the previous value associated with key, or the key-absent-value value if there was no mapping for key.
- See Also:
-
keySet
Returns aSet
view of the keys contained in this map.- Returns:
- a Set view of the keys contained in this map
- See Also:
-
values
Returns aCollection
view of the values contained in this map.- Returns:
- a
Collection
view of the values contained in this map - See Also:
-
intValues
Returns anIntList
containing the values of this map.- Returns:
- an
IntList
containing the values of this map
-
entrySet
Returns a Set view of the mappings contained in this map.- Returns:
- a set view of the mappings contained in this map
- See Also:
-
isEmpty
public boolean isEmpty()Returnstrue
if this map contains no key-value mappings,false
otherwise.- Specified by:
isEmpty
in interfaceorg.klojang.check.aux.Emptyable
- Returns:
true
if this map contains no key-value mappings,false
otherwise- See Also:
-
forEach
Performs the given action for each entry in this map until all entries have been processed or the action throws an exception.- Parameters:
action
- The action to be performed for each entry- See Also:
-
clear
public void clear()Removes all mappings from this map.- See Also:
-
size
public int size()Returns the number of key-value mappings in this map.- Returns:
- the number of key-value mappings in this map
- See Also:
-
enumClass
Returns the type of the enum keys in this map.- Returns:
- the type of the enum keys
-
keyAbsentValue
public int keyAbsentValue()Returns the integer used to signify the absence of a key.- Returns:
- the integer used to signify the absence of a key
-
equals
Returnstrue
if the argument is anEnumToIntMap
for the same enum class and if it contains the same key-value mappings. The two maps need not have the same key-absent-value value. -
hashCode
public int hashCode() -
toString
-