Class ImmutableMap<K,​V>

    • Nested Class Summary

      Nested Classes 
      Modifier and Type Class Description
      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

      All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods 
      Modifier and Type Method Description
      ImmutableSetMultimap<K,​V> asMultimap()
      Returns a multimap view of the map.
      static <K,​V>
      ImmutableMap.Builder<K,​V>
      builder()
      Returns a new builder.
      static <K,​V>
      ImmutableMap.Builder<K,​V>
      builderWithExpectedSize​(int expectedSize)
      Returns a new builder, expecting the specified number of entries to be added.
      void clear()
      Deprecated.
      Unsupported operation.
      boolean containsKey​(Object key)
      Returns true if this map contains a mapping for the specified key.
      boolean containsValue​(Object value)
      Returns true if this map maps one or more keys to the specified value.
      static <K,​V>
      ImmutableMap<K,​V>
      copyOf​(Iterable<? extends Map.Entry<? extends K,​? extends V>> entries)
      Returns an immutable map containing the specified entries.
      static <K,​V>
      ImmutableMap<K,​V>
      copyOf​(Map<? extends K,​? extends V> map)
      Returns an immutable map containing the same entries as map.
      ImmutableSet<Map.Entry<K,​V>> entrySet()
      Returns an immutable set of the mappings in this map.
      boolean equals​(Object object)
      Indicates whether some other object is "equal to" this one.
      abstract V get​(Object key)
      Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key.
      V getOrDefault​(Object key, V defaultValue)
      Returns the value to which the specified key is mapped, or defaultValue if this map contains no mapping for the key.
      int hashCode()
      Returns a hash code value for the object.
      boolean isEmpty()
      Returns true if this map contains no key-value mappings.
      ImmutableSet<K> keySet()
      Returns an immutable set of the keys in this map, in the same order that they appear in entrySet.
      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.
      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, K k6, V v6)
      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, K k6, V v6, K k7, V v7)
      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, K k6, V v6, K k7, V v7, K k8, V v8)
      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, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9)
      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, K k6, V v6, K k7, V v7, K k8, V v8, K k9, V v9, K k10, V v10)
      Returns an immutable map containing the given entries, in order.
      static <K,​V>
      ImmutableMap<K,​V>
      ofEntries​(Map.Entry<? extends K,​? extends V>... entries)
      Returns an immutable map containing the given entries, in order.
      V put​(K k, V v)
      Deprecated.
      Unsupported operation.
      void putAll​(Map<? extends K,​? extends V> map)
      Deprecated.
      Unsupported operation.
      V remove​(Object o)
      Deprecated.
      Unsupported operation.
      String toString()
      Returns a string representation of the object.
      ImmutableCollection<V> values()
      Returns an immutable collection of the values in this map, in the same order that they appear in entrySet.
    • 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.

        Performance note: the instance returned is a singleton.

        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Returns:
        an empty Map
      • 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.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        k1 - the mapping's key
        v1 - the mapping's value
        Returns:
        a Map containing the specified mapping
      • 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.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        k1 - the first mapping's key
        v1 - the first mapping's value
        k2 - the second mapping's key
        v2 - the second mapping's value
        Returns:
        a Map containing the specified mappings
        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.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        k1 - the first mapping's key
        v1 - the first mapping's value
        k2 - the second mapping's key
        v2 - the second mapping's value
        k3 - the third mapping's key
        v3 - the third mapping's value
        Returns:
        a Map containing the specified mappings
        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.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        k1 - the first mapping's key
        v1 - the first mapping's value
        k2 - the second mapping's key
        v2 - the second mapping's value
        k3 - the third mapping's key
        v3 - the third mapping's value
        k4 - the fourth mapping's key
        v4 - the fourth mapping's value
        Returns:
        a Map containing the specified mappings
        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.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        k1 - the first mapping's key
        v1 - the first mapping's value
        k2 - the second mapping's key
        v2 - the second mapping's value
        k3 - the third mapping's key
        v3 - the third mapping's value
        k4 - the fourth mapping's key
        v4 - the fourth mapping's value
        k5 - the fifth mapping's key
        v5 - the fifth mapping's value
        Returns:
        a Map containing the specified mappings
        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,
                                                             K k6,
                                                             V v6)
        Returns an immutable map containing the given entries, in order.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        k1 - the first mapping's key
        v1 - the first mapping's value
        k2 - the second mapping's key
        v2 - the second mapping's value
        k3 - the third mapping's key
        v3 - the third mapping's value
        k4 - the fourth mapping's key
        v4 - the fourth mapping's value
        k5 - the fifth mapping's key
        v5 - the fifth mapping's value
        k6 - the sixth mapping's key
        v6 - the sixth mapping's value
        Returns:
        a Map containing the specified mappings
        Throws:
        IllegalArgumentException - if duplicate keys are provided
        Since:
        31.0
      • 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,
                                                             K k6,
                                                             V v6,
                                                             K k7,
                                                             V v7)
        Returns an immutable map containing the given entries, in order.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        k1 - the first mapping's key
        v1 - the first mapping's value
        k2 - the second mapping's key
        v2 - the second mapping's value
        k3 - the third mapping's key
        v3 - the third mapping's value
        k4 - the fourth mapping's key
        v4 - the fourth mapping's value
        k5 - the fifth mapping's key
        v5 - the fifth mapping's value
        k6 - the sixth mapping's key
        v6 - the sixth mapping's value
        k7 - the seventh mapping's key
        v7 - the seventh mapping's value
        Returns:
        a Map containing the specified mappings
        Throws:
        IllegalArgumentException - if duplicate keys are provided
        Since:
        31.0
      • 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,
                                                             K k6,
                                                             V v6,
                                                             K k7,
                                                             V v7,
                                                             K k8,
                                                             V v8)
        Returns an immutable map containing the given entries, in order.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        k1 - the first mapping's key
        v1 - the first mapping's value
        k2 - the second mapping's key
        v2 - the second mapping's value
        k3 - the third mapping's key
        v3 - the third mapping's value
        k4 - the fourth mapping's key
        v4 - the fourth mapping's value
        k5 - the fifth mapping's key
        v5 - the fifth mapping's value
        k6 - the sixth mapping's key
        v6 - the sixth mapping's value
        k7 - the seventh mapping's key
        v7 - the seventh mapping's value
        k8 - the eighth mapping's key
        v8 - the eighth mapping's value
        Returns:
        a Map containing the specified mappings
        Throws:
        IllegalArgumentException - if duplicate keys are provided
        Since:
        31.0
      • 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,
                                                             K k6,
                                                             V v6,
                                                             K k7,
                                                             V v7,
                                                             K k8,
                                                             V v8,
                                                             K k9,
                                                             V v9)
        Returns an immutable map containing the given entries, in order.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        k1 - the first mapping's key
        v1 - the first mapping's value
        k2 - the second mapping's key
        v2 - the second mapping's value
        k3 - the third mapping's key
        v3 - the third mapping's value
        k4 - the fourth mapping's key
        v4 - the fourth mapping's value
        k5 - the fifth mapping's key
        v5 - the fifth mapping's value
        k6 - the sixth mapping's key
        v6 - the sixth mapping's value
        k7 - the seventh mapping's key
        v7 - the seventh mapping's value
        k8 - the eighth mapping's key
        v8 - the eighth mapping's value
        k9 - the ninth mapping's key
        v9 - the ninth mapping's value
        Returns:
        a Map containing the specified mappings
        Throws:
        IllegalArgumentException - if duplicate keys are provided
        Since:
        31.0
      • 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,
                                                             K k6,
                                                             V v6,
                                                             K k7,
                                                             V v7,
                                                             K k8,
                                                             V v8,
                                                             K k9,
                                                             V v9,
                                                             K k10,
                                                             V v10)
        Returns an immutable map containing the given entries, in order.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        k1 - the first mapping's key
        v1 - the first mapping's value
        k2 - the second mapping's key
        v2 - the second mapping's value
        k3 - the third mapping's key
        v3 - the third mapping's value
        k4 - the fourth mapping's key
        v4 - the fourth mapping's value
        k5 - the fifth mapping's key
        v5 - the fifth mapping's value
        k6 - the sixth mapping's key
        v6 - the sixth mapping's value
        k7 - the seventh mapping's key
        v7 - the seventh mapping's value
        k8 - the eighth mapping's key
        v8 - the eighth mapping's value
        k9 - the ninth mapping's key
        v9 - the ninth mapping's value
        k10 - the tenth mapping's key
        v10 - the tenth mapping's value
        Returns:
        a Map containing the specified mappings
        Throws:
        IllegalArgumentException - if duplicate keys are provided
        Since:
        31.0
      • ofEntries

        @SafeVarargs
        public static <K,​V> ImmutableMap<K,​V> ofEntries​(Map.Entry<? extends K,​? extends V>... entries)
        Returns an immutable map containing the given entries, in order.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        entries - Map.Entrys containing the keys and values from which the map is populated
        Returns:
        a Map containing the specified mappings
        Throws:
        IllegalArgumentException - if duplicate keys are provided
        Since:
        31.0
        See Also:
        Map.entry()
      • builderWithExpectedSize

        @Beta
        public static <K,​V> ImmutableMap.Builder<K,​V> builderWithExpectedSize​(int expectedSize)
        Returns a new builder, expecting the specified number of entries to be added.

        If expectedSize is exactly the number of entries added to the builder before ImmutableMap.Builder.build(boolean) is called, the builder is likely to perform better than an unsized builder() would have.

        It is not specified if any performance benefits apply if expectedSize is close to, but not exactly, the number of entries added to the builder.

        Since:
        23.1
      • 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. The returned map iterates over entries in the same order as the entrySet of the original 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.

        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        map - a Map from which entries are drawn, must be non-null
        Returns:
        a Map containing the entries of the given Map
        Throws:
        NullPointerException - if any key or value in map is null
      • copyOf

        @Beta
        public static <K,​V> ImmutableMap<K,​V> copyOf​(Iterable<? extends Map.Entry<? extends K,​? extends V>> entries)
        Returns an immutable map containing the specified entries. The returned map iterates over entries in the same order as the original iterable.
        Throws:
        NullPointerException - if any key, value, or entry is null
        IllegalArgumentException - if two entries have the same key
        Since:
        19.0
      • put

        @CanIgnoreReturnValue
        @Deprecated
        @CheckForNull
        public final V put​(K k,
                           V v)
        Deprecated.
        Unsupported operation.
        Guaranteed to throw an exception and leave the map unmodified.
        Specified by:
        put in interface Map<K,​V>
        Parameters:
        k - key with which the specified value is to be associated
        v - value to be associated with the specified key
        Returns:
        the previous value associated with key, or null if there was no mapping for key. (A null return can also indicate that the map previously associated null with key, if the implementation supports null values.)
        Throws:
        UnsupportedOperationException - always
      • putAll

        @Deprecated
        public final void putAll​(Map<? extends K,​? extends V> map)
        Deprecated.
        Unsupported operation.
        Guaranteed to throw an exception and leave the map unmodified.
        Specified by:
        putAll in interface Map<K,​V>
        Parameters:
        map - mappings to be stored in this map
        Throws:
        UnsupportedOperationException - always
      • isEmpty

        public boolean isEmpty()
        Description copied from interface: java.util.Map
        Returns true if this map contains no key-value mappings.
        Specified by:
        isEmpty in interface Map<K,​V>
        Returns:
        true if this map contains no key-value mappings
      • containsKey

        public boolean containsKey​(@CheckForNull
                                   Object key)
        Description copied from interface: java.util.Map
        Returns true if this map contains a mapping for the specified key. More formally, returns true if and only if this map contains a mapping for a key k such that Objects.equals(key, k). (There can be at most one such mapping.)
        Specified by:
        containsKey in interface Map<K,​V>
        Parameters:
        key - key whose presence in this map is to be tested
        Returns:
        true if this map contains a mapping for the specified key
      • containsValue

        public boolean containsValue​(@CheckForNull
                                     Object value)
        Description copied from interface: java.util.Map
        Returns true if this map maps one or more keys to the specified value. More formally, returns true if and only if this map contains at least one mapping to a value v such that Objects.equals(value, v). This operation will probably require time linear in the map size for most implementations of the Map interface.
        Specified by:
        containsValue in interface Map<K,​V>
        Parameters:
        value - value whose presence in this map is to be tested
        Returns:
        true if this map maps one or more keys to the specified value
      • get

        @CheckForNull
        public abstract V get​(@CheckForNull
                              Object key)
        Description copied from interface: java.util.Map
        Returns the value to which the specified key is mapped, or null if this map contains no mapping for the key.

        More formally, if this map contains a mapping from a key k to a value v such that Objects.equals(key, k), then this method returns v; otherwise it returns null. (There can be at most one such mapping.)

        If this map permits null values, then a return value of null does not necessarily indicate that the map contains no mapping for the key; it's also possible that the map explicitly maps the key to null. The containsKey operation may be used to distinguish these two cases.

        Specified by:
        get in interface Map<K,​V>
        Parameters:
        key - the key whose associated value is to be returned
        Returns:
        the value to which the specified key is mapped, or null if this map contains no mapping for the key
      • getOrDefault

        @CheckForNull
        public final V getOrDefault​(@CheckForNull
                                    Object key,
                                    @CheckForNull
                                    V defaultValue)
        Returns the value to which the specified key is mapped, or defaultValue if this map contains no mapping for the key.

        See Map.getOrDefault.

        Specified by:
        getOrDefault in interface Map<K,​V>
        Parameters:
        key - the key whose associated value is to be returned
        defaultValue - the default mapping of the key
        Returns:
        the value to which the specified key is mapped, or defaultValue if this map contains no mapping for the key
        Since:
        23.5 (but since 21.0 in the JRE flavor). Note that API Level 24 users can call this method with any version of Guava.
      • entrySet

        public ImmutableSet<Map.Entry<K,​V>> entrySet()
        Returns an immutable set of the mappings in this map. The iteration order is specified by the method used to create this map. Typically, this is insertion order.
        Specified by:
        entrySet in interface Map<K,​V>
        Returns:
        a set view of the mappings contained in this map
      • keySet

        public ImmutableSet<KkeySet()
        Returns an immutable set of the keys in this map, in the same order that they appear in entrySet.
        Specified by:
        keySet in interface Map<K,​V>
        Returns:
        a set view of the keys contained in this map
      • values

        public ImmutableCollection<Vvalues()
        Returns an immutable collection of the values in this map, in the same order that they appear in entrySet.
        Specified by:
        values in interface Map<K,​V>
        Returns:
        a collection view of the values contained in this map
      • equals

        public boolean equals​(@CheckForNull
                              Object object)
        Description copied from class: java.lang.Object
        Indicates whether some other object is "equal to" this one.

        The equals method implements an equivalence relation on non-null object references:

        • It is reflexive: for any non-null reference value x, x.equals(x) should return true.
        • It is symmetric: for any non-null reference values x and y, x.equals(y) should return true if and only if y.equals(x) returns true.
        • It is transitive: for any non-null reference values x, y, and z, if x.equals(y) returns true and y.equals(z) returns true, then x.equals(z) should return true.
        • It is consistent: for any non-null reference values x and y, multiple invocations of x.equals(y) consistently return true or consistently return false, provided no information used in equals comparisons on the objects is modified.
        • For any non-null reference value x, x.equals(null) should return false.

        The equals method for class Object implements the most discriminating possible equivalence relation on objects; that is, for any non-null reference values x and y, this method returns true if and only if x and y refer to the same object (x == y has the value true).

        Note that it is generally necessary to override the hashCode method whenever this method is overridden, so as to maintain the general contract for the hashCode method, which states that equal objects must have equal hash codes.

        Specified by:
        equals in interface Map<K,​V>
        Overrides:
        equals in class Object
        Parameters:
        object - the reference object with which to compare.
        Returns:
        true if this object is the same as the obj argument; false otherwise.
        See Also:
        Object.hashCode(), HashMap
      • hashCode

        public int hashCode()
        Description copied from class: java.lang.Object
        Returns a hash code value for the object. This method is supported for the benefit of hash tables such as those provided by HashMap.

        The general contract of hashCode is:

        • Whenever it is invoked on the same object more than once during an execution of a Java application, the hashCode method must consistently return the same integer, provided no information used in equals comparisons on the object is modified. This integer need not remain consistent from one execution of an application to another execution of the same application.
        • If two objects are equal according to the equals(Object) method, then calling the hashCode method on each of the two objects must produce the same integer result.
        • It is not required that if two objects are unequal according to the Object.equals(java.lang.Object) method, then calling the hashCode method on each of the two objects must produce distinct integer results. However, the programmer should be aware that producing distinct integer results for unequal objects may improve the performance of hash tables.

        As much as is reasonably practical, the hashCode method defined by class Object does return distinct integers for distinct objects. (The hashCode may or may not be implemented as some function of an object's memory address at some point in time.)

        Specified by:
        hashCode in interface Map<K,​V>
        Overrides:
        hashCode in class Object
        Returns:
        a hash code value for this object.
        See Also:
        Object.equals(java.lang.Object), System.identityHashCode(java.lang.Object)
      • toString

        public String toString()
        Description copied from class: java.lang.Object
        Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

        The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

         getClass().getName() + '@' + Integer.toHexString(hashCode())
         
        Overrides:
        toString in class Object
        Returns:
        a string representation of the object.