com.google.common.collect
Class ImmutableBiMap<K,V>

java.lang.Object
  extended by com.google.common.collect.ImmutableMap<K,V>
      extended by com.google.common.collect.ImmutableBiMap<K,V>
All Implemented Interfaces:
BiMap<K,V>, Serializable, Map<K,V>

@GwtCompatible(serializable=true,
               emulated=true)
public abstract class ImmutableBiMap<K,V>
extends ImmutableMap<K,V>
implements BiMap<K,V>

An immutable BiMap with reliable user-specified iteration order. Does not permit null keys or values. An ImmutableBiMap and its inverse have the same iteration ordering.

An instance of ImmutableBiMap contains its own data and will never change. ImmutableBiMap is convenient for public static final maps ("constant maps") and also lets you easily make a "defensive copy" of a bimap provided to your class by a caller.

Note: Although this class is not final, it cannot be subclassed as it has no public or protected constructors. Thus, instances of this class are guaranteed to be immutable.

Since:
2.0 (imported from Google Collections Library)
Author:
Jared Levy
See Also:
Serialized Form

Nested Class Summary
static class ImmutableBiMap.Builder<K,V>
          A builder for creating immutable bimap instances, especially public static final bimaps ("constant bimaps").
 
Nested classes/interfaces inherited from interface java.util.Map
Map.Entry<K,V>
 
Method Summary
static
<K,V> ImmutableBiMap.Builder<K,V>
builder()
          Returns a new builder.
 boolean containsKey(Object key)
           
 boolean containsValue(Object value)
           
static
<K,V> ImmutableBiMap<K,V>
copyOf(Map<? extends K,? extends V> map)
          Returns an immutable bimap containing the same entries as map.
 boolean equals(Object object)
           
 V forcePut(K key, V value)
          Guaranteed to throw an exception and leave the bimap unmodified.
 V get(Object key)
           
 int hashCode()
           
abstract  ImmutableBiMap<V,K> inverse()
          Returns the inverse view of this bimap, which maps each of this bimap's values to its associated key.
 boolean isEmpty()
           
 ImmutableSet<K> keySet()
          Returns an immutable set of the keys in this map.
static
<K,V> ImmutableBiMap<K,V>
of()
          Returns the empty bimap.
static
<K,V> ImmutableBiMap<K,V>
of(K k1, V v1)
          Returns an immutable bimap containing a single entry.
static
<K,V> ImmutableBiMap<K,V>
of(K k1, V v1, K k2, V v2)
          Returns an immutable map containing the given entries, in order.
static
<K,V> ImmutableBiMap<K,V>
of(K k1, V v1, K k2, V v2, K k3, V v3)
          Returns an immutable map containing the given entries, in order.
static
<K,V> ImmutableBiMap<K,V>
of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4)
          Returns an immutable map containing the given entries, in order.
static
<K,V> ImmutableBiMap<K,V>
of(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4, K k5, V v5)
          Returns an immutable map containing the given entries, in order.
 int size()
           
 String toString()
           
 ImmutableSet<V> values()
          Returns an immutable set of the values in this map.
 
Methods inherited from class com.google.common.collect.ImmutableMap
clear, entrySet, put, putAll, remove
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.google.common.collect.BiMap
put, putAll
 
Methods inherited from interface java.util.Map
clear, entrySet, remove
 

Method Detail

of

public static <K,V> ImmutableBiMap<K,V> of()
Returns the empty bimap.


of

public static <K,V> ImmutableBiMap<K,V> of(K k1,
                                           V v1)
Returns an immutable bimap containing a single entry.


of

public static <K,V> ImmutableBiMap<K,V> of(K k1,
                                           V v1,
                                           K k2,
                                           V v2)
Returns an immutable map containing the given entries, in order.

Throws:
IllegalArgumentException - if duplicate keys or values are added

of

public static <K,V> ImmutableBiMap<K,V> of(K k1,
                                           V v1,
                                           K k2,
                                           V v2,
                                           K k3,
                                           V v3)
Returns an immutable map containing the given entries, in order.

Throws:
IllegalArgumentException - if duplicate keys or values are added

of

public static <K,V> ImmutableBiMap<K,V> of(K k1,
                                           V v1,
                                           K k2,
                                           V v2,
                                           K k3,
                                           V v3,
                                           K k4,
                                           V v4)
Returns an immutable map containing the given entries, in order.

Throws:
IllegalArgumentException - if duplicate keys or values are added

of

public static <K,V> ImmutableBiMap<K,V> of(K k1,
                                           V v1,
                                           K k2,
                                           V v2,
                                           K k3,
                                           V v3,
                                           K k4,
                                           V v4,
                                           K k5,
                                           V v5)
Returns an immutable map containing the given entries, in order.

Throws:
IllegalArgumentException - if duplicate keys or values are added

builder

public static <K,V> ImmutableBiMap.Builder<K,V> builder()
Returns a new builder. The generated builder is equivalent to the builder created by the ImmutableBiMap.Builder constructor.


copyOf

public static <K,V> ImmutableBiMap<K,V> copyOf(Map<? extends K,? extends V> map)
Returns an immutable bimap containing the same entries as map. If map somehow contains entries with duplicate keys (for example, if it is a SortedMap whose comparator is not consistent with equals), the results of this method are undefined.

Despite the method name, this method attempts to avoid actually copying the data when it is safe to do so. The exact circumstances under which a copy will or will not be performed are undocumented and subject to change.

Throws:
IllegalArgumentException - if two keys have the same value
NullPointerException - if any key or value in map is null

inverse

public abstract ImmutableBiMap<V,K> inverse()
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.

The inverse of an ImmutableBiMap is another ImmutableBiMap.

Specified by:
inverse in interface BiMap<K,V>
Returns:
the inverse view of this bimap

containsKey

public boolean containsKey(@Nullable
                           Object key)
Specified by:
containsKey in interface Map<K,V>
Overrides:
containsKey in class ImmutableMap<K,V>

containsValue

public boolean containsValue(@Nullable
                             Object value)
Specified by:
containsValue in interface Map<K,V>
Specified by:
containsValue in class ImmutableMap<K,V>

get

public V get(@Nullable
             Object key)
Specified by:
get in interface Map<K,V>
Specified by:
get in class ImmutableMap<K,V>

keySet

public ImmutableSet<K> keySet()
Description copied from class: ImmutableMap
Returns an immutable set of the keys in this map. These keys are in the same order as the parameters used to build this map.

Specified by:
keySet in interface Map<K,V>
Overrides:
keySet in class ImmutableMap<K,V>

values

public ImmutableSet<V> values()
Returns an immutable set of the values in this map. The values are in the same order as the parameters used to build this map.

Specified by:
values in interface BiMap<K,V>
Specified by:
values in interface Map<K,V>
Overrides:
values in class ImmutableMap<K,V>

forcePut

public V forcePut(K key,
                  V value)
Guaranteed to throw an exception and leave the bimap unmodified.

Specified by:
forcePut in interface BiMap<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 which was previously associated with the key, which may be null, or null if there was no previous entry
Throws:
UnsupportedOperationException - always

isEmpty

public boolean isEmpty()
Specified by:
isEmpty in interface Map<K,V>
Overrides:
isEmpty in class ImmutableMap<K,V>

size

public int size()
Specified by:
size in interface Map<K,V>

equals

public boolean equals(@Nullable
                      Object object)
Specified by:
equals in interface Map<K,V>
Overrides:
equals in class ImmutableMap<K,V>

hashCode

public int hashCode()
Specified by:
hashCode in interface Map<K,V>
Overrides:
hashCode in class ImmutableMap<K,V>

toString

public String toString()
Overrides:
toString in class ImmutableMap<K,V>


Copyright © 2010-2012. All Rights Reserved.