Class SaturatedEnumToIntMap<K extends Enum<K>>

java.lang.Object
org.klojang.util.collection.SaturatedEnumToIntMap<K>
Type Parameters:
K - the type of the enum class
All Implemented Interfaces:
org.klojang.check.extra.Emptyable

public final class SaturatedEnumToIntMap<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. All constructors immediately saturate the map with all enum constants and there is no way to remove keys from the map. These two preconditions allow SaturatedEnumToIntMap to be implemented very efficiently.
See Also:
  • Constructor Summary

    Constructors
    Constructor
    Description
    Creates a SaturatedEnumToIntMap.
    SaturatedEnumToIntMap(Class<K> enumClass, int initialValue)
    Creates a SaturatedEnumToIntMap.
    SaturatedEnumToIntMap(Class<K> enumClass, ToIntFunction<K> initializer)
    Creates an EnumToIntMap saturated with all enum constants of the specified enum class.
    Instantiates a new EnumToIntMap with the same key-value mappings as the specified EnumToIntMap.
  • Method Summary

    Modifier and Type
    Method
    Description
    int
    add(K key, int val)
    Adds the specified value to the value currently associated with the specified key.
    int
    compute(K key, IntUnaryOperator operator)
    Computes a new value for the value currently associated with the specified key
    boolean
    Always returns true (all enum constants will always be present in the map).
    boolean
    containsValue(int val)
    Returns true if this map contains the specified value.
    Returns a Set view of the mappings contained in this map.
    boolean
    Returns true if the argument is an EnumToIntMap for the same enum class and if it contains the same key-value mappings.
    void
    Performs the given action for each entry in this map until all entries have been processed or the action throws an exception.
    int
    get(K key)
    Returns the value to which the specified enum constant is mapped.
    int
     
    int
    increment(K key)
    Increments the value currently associated with the specified key.
    Returns an IntList containing the values of this map.
    boolean
    Always returns false.
    Returns a Set view of the keys contained in this map.
    Returns the type of the keys in this map.
    int
    multiply(K key, int val)
    Multiplies the value currently associated with the specified key with the specified value.
    int
    put(K key, int val)
    Associates the specified value with the specified key in this map.
    void
    putAll(Map<K,Integer> other, int nullValue)
    Adds all entries of the specified map to this map.
    void
    Adds all entries of the specified map to this map, overwriting any previous values.
    set(K key, int val)
    Like put(), but provides a fluent API for adding entries to the map.
    int
    Returns the number of key-value mappings in this map.
    Converts this map to a fully-generic version of this map.
     
    Returns a Collection 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

    • SaturatedEnumToIntMap

      public SaturatedEnumToIntMap(Class<K> enumClass)
      Creates a SaturatedEnumToIntMap. The map's values are initialized to 0 (zero).
      Parameters:
      enumClass - the type of the enum class
    • SaturatedEnumToIntMap

      public SaturatedEnumToIntMap(Class<K> enumClass, int initialValue)
      Creates a SaturatedEnumToIntMap. The map's values are initialized to the specified initial value.
      Parameters:
      enumClass - the type of the enum class
      initialValue - the initial value for all enum constants
    • SaturatedEnumToIntMap

      public SaturatedEnumToIntMap(Class<K> enumClass, ToIntFunction<K> initializer)
      Creates an EnumToIntMap 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 class
      initializer - a function that initializes the map's values
    • SaturatedEnumToIntMap

      public SaturatedEnumToIntMap(SaturatedEnumToIntMap<K> other)
      Instantiates a new EnumToIntMap with the same key-value mappings as the specified EnumToIntMap.
      Parameters:
      other - the EnumToIntMap whose key-value mappings to copy
  • Method Details

    • keyType

      public Class<K> keyType()
      Returns the type of the keys in this map.
      Returns:
      the type of the keys in this map
    • containsKey

      public boolean containsKey(K key)
      Always returns true (all enum constants will always be present in the map).
      Parameters:
      key - the enum constant
      Returns:
      true
      See Also:
    • containsValue

      public boolean containsValue(int val)
      Returns true if this map contains the specified value.
      Parameters:
      val - the value to search for
      Returns:
      whether the map contains the value
      See Also:
    • get

      public int get(K key)
      Returns the value to which the specified enum constant is mapped.
      Parameters:
      key - the key whose associated value is to be returned
      Returns:
      the value to which the specified key is mapped
      See Also:
    • put

      public int put(K key, int val)
      Associates the specified value with the specified key in this map.
      Parameters:
      key - the key
      val - the value enum constant yet.
      See Also:
    • set

      public SaturatedEnumToIntMap<K> set(K key, int val)
      Like put(), but provides a fluent API for adding entries to the map.
      Parameters:
      key - the key
      val - the value
      Returns:
      This instance
    • increment

      public int increment(K key)
      Increments the value currently associated with the specified key.
      Parameters:
      key - the key
      Returns:
      the new value associated with the key
    • add

      public int add(K key, int val)
      Adds the specified value to the value currently associated with the specified key.
      Parameters:
      key - the key
      val - the value to add to the value currently associated with the key
      Returns:
      the new value associated with the key
    • multiply

      public int multiply(K key, int val)
      Multiplies the value currently associated with the specified key with the specified value.
      Parameters:
      key - the key
      val - the value to multiply with which to multiply the value currently associated with the key
      Returns:
      the new value associated with the key
    • compute

      public int compute(K key, IntUnaryOperator operator)
      Computes a new value for the value currently associated with the specified key
      Parameters:
      key - the key
      operator - the function to apply to the value currently associated with the key
      Returns:
      the new value associated with the key
    • putAll

      public void putAll(SaturatedEnumToIntMap<K> other)
      Adds all entries of the specified map to this map, overwriting any previous values.
      Parameters:
      other - the EnumToIntMap whose key-value mappings to copy
    • putAll

      public void putAll(Map<K,Integer> other, int nullValue)
      Adds all entries of the specified map to this map. This method acts as a bridge to fully-generic map implementations.
      Parameters:
      other - the Map whose key-value mappings to copy
      nullValue - the int value to use for null values in the source map
    • toGenericMap

      public EnumMap<K,Integer> toGenericMap()
      Converts this map to a fully-generic version of this map.
      Returns:
      a fully-generic version of this map
    • keySet

      public Set<K> keySet()
      Returns a Set view of the keys contained in this map. The Set maintains the order of the enum constants, and can be iterated over quickly, but is inefficient for typical set operations such as constains().
      Returns:
      a Set view of the keys contained in this map
      See Also:
    • values

      public Collection<Integer> values()
      Returns a Collection view of the values contained in this map.
      Returns:
      a Collection view of the values contained in this map
      See Also:
    • intValues

      public IntList intValues()
      Returns an IntList containing the values of this map.
      Returns:
      an IntList containing the values of this map
    • entrySet

      public Set<Map.Entry<K,Integer>> 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:
    • forEach

      public 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.
      Parameters:
      action - the action to be performed for each entry
      See Also:
    • isEmpty

      public boolean isEmpty()
      Always returns false.
      Specified by:
      isEmpty in interface org.klojang.check.extra.Emptyable
      Returns:
      false
    • 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

      public boolean equals(Object obj)
      Returns true if the argument is an EnumToIntMap 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.
      Overrides:
      equals in class Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class Object
    • toString

      public String toString()
      Overrides:
      toString in class Object