Class EnumHashBiMap<K extends Enum<K>,V>

All Implemented Interfaces:
BiMap<K,V>, Serializable, Map<K,V>

public final class EnumHashBiMap<K extends Enum<K>,V> extends AbstractBiMap<K,V>
A BiMap backed by an EnumMap instance for keys-to-values, and a HashMap instance for values-to-keys. Null keys are not permitted, but null values are. An EnumHashBiMap and its inverse are both serializable.

See the Guava User Guide article on BiMap.

Since:
2.0
See Also:
  • Field Details

    • keyTypeOrObjectUnderJ2cl

      transient Class<K extends Enum<K>> keyTypeOrObjectUnderJ2cl
    • serialVersionUID

      private static final long serialVersionUID
      See Also:
  • Constructor Details

    • EnumHashBiMap

      private EnumHashBiMap(Class<K> keyType)
  • Method Details

    • create

      public static <K extends Enum<K>, V> EnumHashBiMap<K,V> create(Class<K> keyType)
      Returns a new, empty EnumHashBiMap using the specified key type.
      Parameters:
      keyType - the key type
    • create

      public static <K extends Enum<K>, V> EnumHashBiMap<K,V> create(Map<K,? extends V> map)
      Constructs a new bimap with the same mappings as the specified map. If the specified map is an EnumHashBiMap or an EnumBiMap, the new bimap has the same key type as the input bimap. Otherwise, the specified map must contain at least one mapping, in order to determine the key type.
      Parameters:
      map - the map whose mappings are to be placed in this map
      Throws:
      IllegalArgumentException - if map is not an EnumBiMap or an EnumHashBiMap instance and contains no mappings
    • checkKey

      K checkKey(K key)
      Description copied from class: AbstractBiMap
      Returns its input, or throws an exception if this is not a valid key.
      Overrides:
      checkKey in class AbstractBiMap<K extends Enum<K>,V>
    • put

      @CheckForNull public V put(K key, V value)
      Description copied from interface: BiMap
      Specified by:
      put in interface BiMap<K extends Enum<K>,V>
      Specified by:
      put in interface Map<K extends Enum<K>,V>
      Overrides:
      put in class AbstractBiMap<K extends Enum<K>,V>
    • forcePut

      @CheckForNull public V forcePut(K key, V value)
      Description copied from interface: BiMap
      An alternate form of put that silently removes any existing entry with the value value before proceeding with the BiMap.put(K, V) operation. If the bimap previously contained the provided key-value mapping, this method has no effect.

      Note that a successful call to this method could cause the size of the bimap to increase by one, stay the same, or even decrease by one.

      Warning: If an existing entry with this value is removed, the key for that entry is discarded and not returned.

      Specified by:
      forcePut in interface BiMap<K extends Enum<K>,V>
      Overrides:
      forcePut in class AbstractBiMap<K extends Enum<K>,V>
      Parameters:
      key - the key with which the specified value is to be associated
      value - the value to be associated with the specified key
      Returns:
      the value that was previously associated with the key, or null if there was no previous entry. (If the bimap contains null values, then forcePut, like put, returns null both if the key is absent and if it is present with a null value.)
    • keyType

      public Class<K> keyType()
      Returns the associated key type.
    • writeObject

      private void writeObject(ObjectOutputStream stream) throws IOException
      Throws:
      IOException
    • readObject

      private void readObject(ObjectInputStream stream) throws IOException, ClassNotFoundException
      Throws:
      IOException
      ClassNotFoundException