Class EnumToIntMap<K extends Enum<K>>
java.lang.Object
org.klojang.util.collection.EnumToIntMap<K>
- Type Parameters:
K
- the type of the enum class
- All Implemented Interfaces:
org.klojang.check.extra.Emptyable
public final class EnumToIntMap<K extends Enum<K>>
extends Object
implements org.klojang.check.extra.Emptyable
An 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. Although EnumToIntMap
loosely mimics the behaviour and interface of the
Map
interface, it obviously does not, and cannot implement the Map
interface. Some methods
need to behave differently due to the fact that the type of the values in the map is a primitive
type (int
).- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionEnumToIntMap
(Class<K> enumClass) Creates an emptyEnumToIntMap
for the specifiedenum
class.EnumToIntMap
(Class<K> enumClass, int initialValue) Creates anEnumToIntMap
saturated with all enum constants of the specified enum class.EnumToIntMap
(Class<K> enumClass, ToIntFunction<K> initializer) Creates anEnumToIntMap
saturated with all enum constants of the specified enum class.EnumToIntMap
(EnumToIntMap<K> other) Instantiates a newEnumToIntMap
with the same key-value mappings as the specifiedEnumToIntMap
. -
Method Summary
Modifier and TypeMethodDescriptionvoid
clear()
Removes all mappings from this map.int
computeIfPresent
(K key, IntUnaryOperator operator, int initialValue) Computes a new value for the specified key if present, else associates the key with the specified initial value.boolean
containsKey
(K key) Returnstrue
if this map contains a mapping for the specified key.boolean
containsValue
(int val) Returnstrue
if this map contains the specified value.entrySet()
Returns a Set view of the mappings contained 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.Returns anOptionalInt
containing the value to which the specified enum constant is mapped, or an emptyOptionalInt
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.keySet()
Returns aSet
view of the keys contained in this map.keyType()
Returns the type of the keys in this map.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.Removes the mapping for a key from this map if it is present.Likeput()
, but provides a fluent API for adding entries to the map.int
size()
Returns the number of key-value mappings in this map.Converts this map to a 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.extra.Emptyable
isDeepNotEmpty
-
Constructor Details
-
EnumToIntMap
-
EnumToIntMap
Creates anEnumToIntMap
saturated with all enum constants of the specified enum class. The map's values are initialized to the specified initial value.- Parameters:
enumClass
- the type of the enum classinitialValue
- the initial value for all enum constants
-
EnumToIntMap
Creates anEnumToIntMap
saturated with all enum constants of the specified enum class. The map's values are initialized using the provided function, which takes an enum constant and returns the initial value for the enum constant.- Parameters:
enumClass
- the type of the enum classinitializer
- a function called to initialize the map's values
-
EnumToIntMap
Instantiates a newEnumToIntMap
with the same key-value mappings as the specifiedEnumToIntMap
.- Parameters:
other
- theEnumToIntMap
whose key-value mappings to copy
-
-
Method Details
-
keyType
-
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 contains the specified value.- Parameters:
val
- the value to search for- Returns:
- whether the map contains the value
- See Also:
-
get
Returns anOptionalInt
containing the value to which the specified enum constant is mapped, or an emptyOptionalInt
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
- 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:
-
computeIfPresent
Computes a new value for the specified key if present, else associates the key with the specified initial value.- Parameters:
key
- the keyoperator
- the function to apply to the value currently associated with the keyinitialValue
- the value to associate the key with if the key was not present in the map yet- Returns:
- the new value
-
put
Associates the specified value with the specified key in this map.- Parameters:
key
- the keyval
- the value enum constant yet.- See Also:
-
set
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.- Parameters:
other
- theMap
whose key-value mappings to copynullValue
- theint
value to use fornull
values in the source map
-
toGenericMap
-
remove
Removes the mapping for a key from this map if it is present.- Parameters:
key
- the key- Returns:
- an
OptionalInt
containing the previous value associated with key, or an emptyOptionalInt
if there was no mapping for key. - See Also:
-
keySet
Returns aSet
view of the keys contained in this map. TheSet
maintains the order of the enum constants, and can be iterated over quickly, but is inefficient for typical set operations such asconstains()
.- 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
-
isEmpty
public boolean isEmpty()Returnstrue
if this map contains no key-value mappings,false
otherwise.- Specified by:
isEmpty
in interfaceorg.klojang.check.extra.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:
-
equals
-
hashCode
-
toString
-