Package com.google.common.collect
Class AbstractBiMap<K,V>
- java.lang.Object
-
- com.google.common.collect.ForwardingObject
-
- com.google.common.collect.ForwardingMap<K,V>
-
- com.google.common.collect.AbstractBiMap<K,V>
-
- All Implemented Interfaces:
BiMap<K,V>
,java.io.Serializable
,java.util.Map<K,V>
- Direct Known Subclasses:
AbstractBiMap.Inverse
,EnumBiMap
,EnumHashBiMap
@GwtCompatible(emulated=true) abstract class AbstractBiMap<K,V> extends ForwardingMap<K,V> implements BiMap<K,V>, java.io.Serializable
A general-purpose bimap implementation using any two backingMap
instances.Note that this class contains
equals()
calls that keep it from supportingIdentityHashMap
backing maps.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description (package private) class
AbstractBiMap.BiMapEntry
private class
AbstractBiMap.EntrySet
(package private) static class
AbstractBiMap.Inverse<K,V>
The inverse of any otherAbstractBiMap
subclass.private class
AbstractBiMap.KeySet
private class
AbstractBiMap.ValueSet
-
Nested classes/interfaces inherited from class com.google.common.collect.ForwardingMap
ForwardingMap.StandardEntrySet, ForwardingMap.StandardKeySet, ForwardingMap.StandardValues
-
-
Field Summary
Fields Modifier and Type Field Description private java.util.Map<K,V>
delegate
private java.util.Set<java.util.Map.Entry<K,V>>
entrySet
(package private) AbstractBiMap<V,K>
inverse
private java.util.Set<K>
keySet
private static long
serialVersionUID
private java.util.Set<V>
valueSet
-
Constructor Summary
Constructors Modifier Constructor Description private
AbstractBiMap(java.util.Map<K,V> backward, AbstractBiMap<V,K> forward)
Private constructor for inverse bimap.(package private)
AbstractBiMap(java.util.Map<K,V> forward, java.util.Map<V,K> backward)
Package-private constructor for creating a map-backed bimap.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description (package private) K
checkKey(K key)
Returns its input, or throws an exception if this is not a valid key.(package private) V
checkValue(V value)
Returns its input, or throws an exception if this is not a valid value.void
clear()
boolean
containsValue(java.lang.Object value)
protected java.util.Map<K,V>
delegate()
Returns the backing delegate instance that methods are forwarded to.java.util.Set<java.util.Map.Entry<K,V>>
entrySet()
(package private) java.util.Iterator<java.util.Map.Entry<K,V>>
entrySetIterator()
V
forcePut(K key, V value)
An alternate form ofput
that silently removes any existing entry with the valuevalue
before proceeding with theBiMap.put(K, V)
operation.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()
(package private) AbstractBiMap<V,K>
makeInverse(java.util.Map<V,K> backward)
V
put(K key, V value)
void
putAll(java.util.Map<? extends K,? extends V> map)
private V
putInBothMaps(K key, V value, boolean force)
V
remove(java.lang.Object key)
private V
removeFromBothMaps(java.lang.Object key)
private void
removeFromInverseMap(V oldValue)
void
replaceAll(java.util.function.BiFunction<? super K,? super V,? extends V> function)
(package private) void
setDelegates(java.util.Map<K,V> forward, java.util.Map<V,K> backward)
Specifies the delegate maps going in each direction.(package private) void
setInverse(AbstractBiMap<V,K> inverse)
private void
updateInverseMap(K key, boolean containedKey, V oldValue, V newValue)
java.util.Set<V>
values()
-
Methods inherited from class com.google.common.collect.ForwardingMap
containsKey, equals, get, hashCode, isEmpty, size, standardClear, standardContainsKey, standardContainsValue, standardEquals, standardHashCode, standardIsEmpty, standardPutAll, standardRemove, standardToString
-
Methods inherited from class com.google.common.collect.ForwardingObject
toString
-
-
-
-
Field Detail
-
inverse
transient AbstractBiMap<V,K> inverse
-
keySet
private transient java.util.Set<K> keySet
-
valueSet
private transient java.util.Set<V> valueSet
-
serialVersionUID
@GwtIncompatible private static final long serialVersionUID
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
AbstractBiMap
AbstractBiMap(java.util.Map<K,V> forward, java.util.Map<V,K> backward)
Package-private constructor for creating a map-backed bimap.
-
AbstractBiMap
private AbstractBiMap(java.util.Map<K,V> backward, AbstractBiMap<V,K> forward)
Private constructor for inverse bimap.
-
-
Method Detail
-
delegate
protected java.util.Map<K,V> delegate()
Description copied from class:ForwardingObject
Returns the backing delegate instance that methods are forwarded to. Abstract subclasses generally override this method with an abstract method that has a more specific return type, such asForwardingSet.delegate()
. Concrete subclasses override this method to supply the instance being decorated.- Specified by:
delegate
in classForwardingMap<K,V>
-
checkValue
V checkValue(V value)
Returns its input, or throws an exception if this is not a valid value.
-
setDelegates
void setDelegates(java.util.Map<K,V> forward, java.util.Map<V,K> backward)
Specifies the delegate maps going in each direction. Called by the constructor and by subclasses during deserialization.
-
makeInverse
AbstractBiMap<V,K> makeInverse(java.util.Map<V,K> backward)
-
setInverse
void setInverse(AbstractBiMap<V,K> inverse)
-
containsValue
public boolean containsValue(java.lang.Object value)
- Specified by:
containsValue
in interfacejava.util.Map<K,V>
- Overrides:
containsValue
in classForwardingMap<K,V>
-
forcePut
public V forcePut(K key, 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
-
updateInverseMap
private void updateInverseMap(K key, boolean containedKey, V oldValue, V newValue)
-
remove
public V remove(java.lang.Object key)
-
removeFromBothMaps
private V removeFromBothMaps(java.lang.Object key)
-
removeFromInverseMap
private void removeFromInverseMap(V oldValue)
-
putAll
public void putAll(java.util.Map<? extends K,? extends V> map)
Description copied from interface:BiMap
Warning: the results of calling this method may vary depending on the iteration order of
map
.
-
replaceAll
public void replaceAll(java.util.function.BiFunction<? super K,? super V,? extends V> function)
-
clear
public void clear()
-
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.
-
keySet
public java.util.Set<K> keySet()
-
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.
-
-