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

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

public abstract class ImmutableMap<K,V>
extends Object
implements Map<K,V>, Serializable

An immutable, hash-based Map with reliable user-specified iteration order. Does not permit null keys or values.

Unlike Collections.unmodifiableMap(java.util.Map), which is a view of a separate map which can still change, an instance of ImmutableMap contains its own data and will never change. ImmutableMap is convenient for public static final maps ("constant maps") and also lets you easily make a "defensive copy" of a map 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:
2010.01.04 stable (imported from Google Collections Library)
Author:
Jesse Wilson, Kevin Bourrillion
See Also:
ImmutableList, ImmutableSet, Serialized Form

Nested Class Summary
static class ImmutableMap.Builder<K,V>
          A builder for creating immutable map instances, especially public static final maps ("constant maps").
 
Nested classes/interfaces inherited from interface java.util.Map
Map.Entry<K,V>
 
Method Summary
static
<K,V> ImmutableMap.Builder<K,V>
builder()
          Returns a new builder.
 void clear()
          Guaranteed to throw an exception and leave the map unmodified.
 boolean containsKey(Object key)
           
abstract  boolean containsValue(Object value)
           
static
<K,V> ImmutableMap<K,V>
copyOf(Map<? extends K,? extends V> map)
          Returns an immutable map containing the same entries as map.
abstract  ImmutableSet<Map.Entry<K,V>> entrySet()
          Returns an immutable set of the mappings in this map.
 boolean equals(Object object)
           
abstract  V get(Object key)
           
 int hashCode()
           
 boolean isEmpty()
           
abstract  ImmutableSet<K> keySet()
          Returns an immutable set of the keys in this map.
static
<K,V> ImmutableMap<K,V>
of()
          Returns the empty map.
static
<K,V> ImmutableMap<K,V>
of(K k1, V v1)
          Returns an immutable map containing a single entry.
static
<K,V> ImmutableMap<K,V>
of(K k1, V v1, K k2, V v2)
          Returns an immutable map containing the given entries, in order.
static
<K,V> ImmutableMap<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> ImmutableMap<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> ImmutableMap<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.
 V put(K k, V v)
          Guaranteed to throw an exception and leave the map unmodified.
 void putAll(Map<? extends K,? extends V> map)
          Guaranteed to throw an exception and leave the map unmodified.
 V remove(Object o)
          Guaranteed to throw an exception and leave the map unmodified.
 String toString()
           
abstract  ImmutableCollection<V> values()
          Returns an immutable collection of the values in this map.
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface java.util.Map
size
 

Method Detail

of

public static <K,V> ImmutableMap<K,V> of()
Returns the empty map. This map behaves and performs comparably to Collections.emptyMap(), and is preferable mainly for consistency and maintainability of your code.


of

public static <K,V> ImmutableMap<K,V> of(K k1,
                                         V v1)
Returns an immutable map containing a single entry. This map behaves and performs comparably to Collections.singletonMap(K, V) but will not accept a null key or value. It is preferable mainly for consistency and maintainability of your code.


of

public static <K,V> ImmutableMap<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 are provided

of

public static <K,V> ImmutableMap<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 are provided

of

public static <K,V> ImmutableMap<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 are provided

of

public static <K,V> ImmutableMap<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 are provided

builder

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


copyOf

public static <K,V> ImmutableMap<K,V> copyOf(Map<? extends K,? extends V> map)
Returns an immutable map 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.

Note: Despite what the method name suggests, if map is an ImmutableMap, no copy will actually be performed, and the given map itself will be returned.

Throws:
NullPointerException - if any key or value in map is null

put

public final V put(K k,
                   V v)
Guaranteed to throw an exception and leave the map unmodified.

Specified by:
put in interface Map<K,V>
Throws:
UnsupportedOperationException - always

remove

public final V remove(Object o)
Guaranteed to throw an exception and leave the map unmodified.

Specified by:
remove in interface Map<K,V>
Throws:
UnsupportedOperationException - always

putAll

public final void putAll(Map<? extends K,? extends V> map)
Guaranteed to throw an exception and leave the map unmodified.

Specified by:
putAll in interface Map<K,V>
Throws:
UnsupportedOperationException - always

clear

public final void clear()
Guaranteed to throw an exception and leave the map unmodified.

Specified by:
clear in interface Map<K,V>
Throws:
UnsupportedOperationException - always

isEmpty

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

containsKey

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

containsValue

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

get

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

entrySet

public abstract ImmutableSet<Map.Entry<K,V>> entrySet()
Returns an immutable set of the mappings in this map. The entries are in the same order as the parameters used to build this map.

Specified by:
entrySet in interface Map<K,V>

keySet

public abstract ImmutableSet<K> keySet()
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>

values

public abstract ImmutableCollection<V> values()
Returns an immutable collection 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 Map<K,V>

equals

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

hashCode

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

toString

public String toString()
Overrides:
toString in class Object