# Class DualHashBidiMap<K,V>

java.lang.Object
org.apache.commons.collections4.bidimap.AbstractDualBidiMap<K,V>
org.apache.commons.collections4.bidimap.DualHashBidiMap<K,V>

Type Parameters:
  `K` - the type of the keys in the map
  `V` - the type of the values in the map

All Implemented Interfaces:
  `Serializable`, `Map<K,V>`, `BidiMap<K,V>`, `Get<K,V>`, `IterableGet<K,V>`, `IterableMap<K,V>`, `Put<K,V>`

public class DualHashBidiMap<K,V> extends AbstractDualBidiMap<K,V> implements Serializable
Implements `BidiMap` with two `HashMap` instances.

Two `HashMap` instances are used in this class. This provides fast lookups at the expense of storing two sets of map entries. Commons Collections would welcome the addition of a direct hash-based implementation of the `BidiMap` interface.

NOTE: From Commons Collections 3.1, all subclasses will use `HashMap` and the flawed `createMap` method is ignored.

Since:
  3.0
See Also:
  - Serialized Form

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class org.apache.commons.collections4.bidimap.AbstractDualBidiMap

  `AbstractDualBidiMap.BidiMapIterator<K,V>, AbstractDualBidiMap.EntrySet<K,V>, AbstractDualBidiMap.EntrySetIterator<K,V>, AbstractDualBidiMap.KeySet<K>, AbstractDualBidiMap.KeySetIterator<K>, AbstractDualBidiMap.MapEntry<K,V>, AbstractDualBidiMap.Values<V>, AbstractDualBidiMap.ValuesIterator<V>, AbstractDualBidiMap.View<K,V,E>`

  ### Nested classes/interfaces inherited from interface java.util.Map

  `Map.Entry<K,V>`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  ``
  `DualHashBidiMap()`
  Creates an empty `HashBidiMap`.
  ``
  `DualHashBidiMap(Map<? extends K,? extends V> map)`
  Constructs a `HashBidiMap` and copies the mappings from specified `Map`.
  `protected`
  `DualHashBidiMap(Map<K,V> normalMap, Map<V,K> reverseMap, BidiMap<V,K> inverseBidiMap)`
  Constructs a `HashBidiMap` that decorates the specified maps.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `protected BidiMap<V,K>`
  `createBidiMap(Map<V,K> normalMap, Map<K,V> reverseMap, BidiMap<K,V> inverseBidiMap)`
  Creates a new instance of this object.

  ### Methods inherited from class org.apache.commons.collections4.bidimap.AbstractDualBidiMap

  `clear, containsKey, containsValue, createEntrySetIterator, createKeySetIterator, createValuesIterator, entrySet, equals, get, getKey, hashCode, inverseBidiMap, isEmpty, keySet, mapIterator, put, putAll, remove, removeValue, size, toString, values`

  ### Methods inherited from class java.lang.Object

  `clone, 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

  - ### DualHashBidiMap

    public DualHashBidiMap()
    Creates an empty `HashBidiMap`.

  - ### DualHashBidiMap

    public DualHashBidiMap(Map<? extends K,? extends V> map)
    Constructs a `HashBidiMap` and copies the mappings from specified `Map`.
    Parameters:
      `map` - the map whose mappings are to be placed in this map

  - ### DualHashBidiMap

    protected DualHashBidiMap(Map<K,V> normalMap, Map<V,K> reverseMap, BidiMap<V,K> inverseBidiMap)
    Constructs a `HashBidiMap` that decorates the specified maps.
    Parameters:
      `normalMap` - the normal direction map
      `reverseMap` - the reverse direction map
      `inverseBidiMap` - the inverse BidiMap

- ## Method Details

  - ### createBidiMap

    protected BidiMap<V,K> createBidiMap(Map<V,K> normalMap, Map<K,V> reverseMap, BidiMap<K,V> inverseBidiMap)
    Creates a new instance of this object.
    Specified by:
      `createBidiMap` in class `AbstractDualBidiMap<K,V>`
    Parameters:
      `normalMap` - the normal direction map
      `reverseMap` - the reverse direction map
      `inverseBidiMap` - the inverse BidiMap
    Returns:
      new bidi map