Package com.google.common.collect
Class HashBiMap<K,V>
- java.lang.Object
-
- java.util.AbstractMap<K,V>
-
- com.google.common.collect.HashBiMap<K,V>
-
- All Implemented Interfaces:
BiMap<K,V>
,java.io.Serializable
,java.util.Map<K,V>
@GwtCompatible(emulated=true) public final class HashBiMap<K,V> extends java.util.AbstractMap<K,V> implements BiMap<K,V>, java.io.Serializable
ABiMap
backed by two hash tables. This implementation allows null keys and values. AHashBiMap
and its inverse are both serializable.This implementation guarantees insertion-based iteration order of its keys.
See the Guava User Guide article on
BiMap
.- Since:
- 2.0
- Author:
- Louis Wasserman, Mike Bostock
- See Also:
- Serialized Form
-
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
clear()
boolean
containsKey(@Nullable java.lang.Object key)
boolean
containsValue(@Nullable java.lang.Object value)
Returnstrue
if this BiMap contains an entry whose value is equal tovalue
(or, equivalently, if this inverse view contains a key that is equal tovalue
).static <K,V>
HashBiMap<K,V>create()
Returns a new, emptyHashBiMap
with the default initial capacity (16).static <K,V>
HashBiMap<K,V>create(int expectedSize)
Constructs a new, empty bimap with the specified expected size.static <K,V>
HashBiMap<K,V>create(java.util.Map<? extends K,? extends V> map)
Constructs a new bimap containing initial values frommap
.java.util.Set<java.util.Map.Entry<K,V>>
entrySet()
@Nullable V
forcePut(@Nullable K key, @Nullable V value)
An alternate form ofput
that silently removes any existing entry with the valuevalue
before proceeding with theBiMap.put(K, V)
operation.void
forEach(java.util.function.BiConsumer<? super K,? super V> action)
@Nullable V
get(@Nullable java.lang.Object key)
BiMap<V,K>
inverse()
Returns the inverse view of this bimap, which maps each of this bimap's values to its associated key.java.util.Set<K>
keySet()
V
put(@Nullable K key, @Nullable V value)
@Nullable V
remove(@Nullable java.lang.Object key)
void
replaceAll(java.util.function.BiFunction<? super K,? super V,? extends V> function)
int
size()
java.util.Set<V>
values()
-
Methods inherited from class java.util.AbstractMap
clone, equals, hashCode, isEmpty, putAll, toString
-
-
-
-
Method Detail
-
create
public static <K,V> HashBiMap<K,V> create()
Returns a new, emptyHashBiMap
with the default initial capacity (16).
-
create
public static <K,V> HashBiMap<K,V> create(int expectedSize)
Constructs a new, empty bimap with the specified expected size.- Parameters:
expectedSize
- the expected number of entries- Throws:
java.lang.IllegalArgumentException
- if the specified expected size is negative
-
create
public static <K,V> HashBiMap<K,V> create(java.util.Map<? extends K,? extends V> map)
Constructs a new bimap containing initial values frommap
. The bimap is created with an initial capacity sufficient to hold the mappings in the specified map.
-
containsKey
public boolean containsKey(@Nullable java.lang.Object key)
-
containsValue
public boolean containsValue(@Nullable java.lang.Object value)
Returnstrue
if this BiMap contains an entry whose value is equal tovalue
(or, equivalently, if this inverse view contains a key that is equal tovalue
).Due to the property that values in a BiMap are unique, this will tend to execute in faster-than-linear time.
-
put
@CanIgnoreReturnValue public V put(@Nullable K key, @Nullable V value)
Description copied from interface:BiMap
-
forcePut
@CanIgnoreReturnValue public @Nullable V forcePut(@Nullable K key, @Nullable V value)
Description copied from interface:BiMap
An alternate form ofput
that silently removes any existing entry with the valuevalue
before proceeding with theBiMap.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 interfaceBiMap<K,V>
- Parameters:
key
- the key with which the specified value is to be associatedvalue
- the value to be associated with the specified key- Returns:
- the value which was previously associated with the key, which may be
null
, ornull
if there was no previous entry
-
remove
@CanIgnoreReturnValue public @Nullable V remove(@Nullable java.lang.Object key)
-
values
public java.util.Set<V> values()
Description copied from interface:BiMap
Because a bimap has unique values, this method returns a
Set
, instead of theCollection
specified in theMap
interface.
-
replaceAll
public void replaceAll(java.util.function.BiFunction<? super K,? super V,? extends V> function)
-
inverse
public BiMap<V,K> inverse()
Description copied from interface:BiMap
Returns the inverse view of this bimap, which maps each of this bimap's values to its associated key. The two bimaps are backed by the same data; any changes to one will appear in the other.Note:There is no guaranteed correspondence between the iteration order of a bimap and that of its inverse.
-
entrySet
public java.util.Set<java.util.Map.Entry<K,V>> entrySet()
- Specified by:
entrySet
in interfacejava.util.Map<K,V>
- Specified by:
entrySet
in classjava.util.AbstractMap<K,V>
-
-