Class MapUtils


  • public final class MapUtils
    extends java.lang.Object
    Immutable Map utilities to polyfill Java 9+ features.
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static <K,​V>
      java.util.Map<K,​V>
      copyOf​(java.util.Map<? extends K,​? extends V> map)
      Creates an immutable copy of the given map.
      static <K,​V>
      java.util.Map.Entry<K,​V>
      entry​(K key, V value)
      Creates an immutable Map.Entry from the given key and value.
      static <K,​V>
      java.util.Map<K,​V>
      of()
      Returns an unmodifiable map containing zero mappings.
      static <K,​V>
      java.util.Map<K,​V>
      of​(K k1, V v1)
      Returns an unmodifiable map containing a single mapping.
      static <K,​V>
      java.util.Map<K,​V>
      of​(K k1, V v1, K k2, V v2)
      Returns an unmodifiable map containing two mappings.
      static <K,​V>
      java.util.Map<K,​V>
      of​(K k1, V v1, K k2, V v2, K k3, V v3)
      Returns an unmodifiable map containing three mappings.
      static <K,​V>
      java.util.Map<K,​V>
      of​(K k1, V v1, K k2, V v2, K k3, V v3, K k4, V v4)
      Returns an unmodifiable map containing four mappings.
      static <K,​V>
      java.util.Map<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 unmodifiable map containing five mappings.
      static <K,​V>
      java.util.Map<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 unmodifiable map containing six mappings.
      static <K,​V>
      java.util.Map<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 unmodifiable map containing seven mappings.
      static <K,​V>
      java.util.Map<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 unmodifiable map containing eight mappings.
      static <K,​V>
      java.util.Map<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 unmodifiable map containing nine mappings.
      static <K,​V>
      java.util.Map<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 unmodifiable map containing ten mappings.
      static <K,​V>
      java.util.Map<K,​V>
      ofEntries​(java.util.Map.Entry<? extends K,​? extends V>... entries)
      Creates an unmodifiable Map from an array of Map.Entry values.
      static <K,​V>
      java.util.Map<K,​V>
      orderedCopyOf​(java.util.Map<? extends K,​? extends V> map)
      Creates an ordered immutable copy of the given map.
      static <T,​K,​U>
      java.util.stream.Collector<T,​?,​java.util.Map<K,​U>>
      toUnmodifiableMap​(java.util.function.Function<? super T,​? extends K> keyMapper, java.util.function.Function<? super T,​? extends U> valueMapper)
      Creates a collector that collects into an unmodifiable Map.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Method Detail

      • copyOf

        public static <K,​V> java.util.Map<K,​V> copyOf​(java.util.Map<? extends K,​? extends V> map)
        Creates an immutable copy of the given map.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        map - The map to make an immutable copy of
        Returns:
        An immutable Map copy
      • orderedCopyOf

        public static <K,​V> java.util.Map<K,​V> orderedCopyOf​(java.util.Map<? extends K,​? extends V> map)
        Creates an ordered immutable copy of the given map.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Parameters:
        map - The map to make an immutable copy of
        Returns:
        An ordered immutable Map copy that maintains the order of the original.
      • of

        public static <K,​V> java.util.Map<K,​V> of()
        Returns an unmodifiable map containing zero mappings.
        Type Parameters:
        K - the Map's key type
        V - the Map's value type
        Returns:
        an empty Map
      • of

        public static <K,​V> java.util.Map<K,​V> of​(K k1,
                                                              V v1)
        Returns an unmodifiable map containing a single mapping.
        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
        Throws:
        java.lang.NullPointerException - if the key or the value is null
      • of

        public static <K,​V> java.util.Map<K,​V> of​(K k1,
                                                              V v1,
                                                              K k2,
                                                              V v2)
        Returns an unmodifiable map containing two mappings.
        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:
        java.lang.IllegalArgumentException - if the keys are duplicates
        java.lang.NullPointerException - if any key or value is null
      • of

        public static <K,​V> java.util.Map<K,​V> of​(K k1,
                                                              V v1,
                                                              K k2,
                                                              V v2,
                                                              K k3,
                                                              V v3)
        Returns an unmodifiable map containing three mappings.
        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:
        java.lang.IllegalArgumentException - if there are any duplicate keys
        java.lang.NullPointerException - if any key or value is null
      • of

        public static <K,​V> java.util.Map<K,​V> of​(K k1,
                                                              V v1,
                                                              K k2,
                                                              V v2,
                                                              K k3,
                                                              V v3,
                                                              K k4,
                                                              V v4)
        Returns an unmodifiable map containing four mappings.
        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:
        java.lang.IllegalArgumentException - if there are any duplicate keys
        java.lang.NullPointerException - if any key or value is null
      • of

        public static <K,​V> java.util.Map<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 unmodifiable map containing five mappings.
        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:
        java.lang.IllegalArgumentException - if there are any duplicate keys
        java.lang.NullPointerException - if any key or value is null
      • of

        public static <K,​V> java.util.Map<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 unmodifiable map containing six mappings.
        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:
        java.lang.IllegalArgumentException - if there are any duplicate keys
        java.lang.NullPointerException - if any key or value is null
      • of

        public static <K,​V> java.util.Map<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 unmodifiable map containing seven mappings.
        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:
        java.lang.IllegalArgumentException - if there are any duplicate keys
        java.lang.NullPointerException - if any key or value is null
      • of

        public static <K,​V> java.util.Map<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 unmodifiable map containing eight mappings.
        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:
        java.lang.IllegalArgumentException - if there are any duplicate keys
        java.lang.NullPointerException - if any key or value is null
      • of

        public static <K,​V> java.util.Map<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 unmodifiable map containing nine mappings.
        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:
        java.lang.IllegalArgumentException - if there are any duplicate keys
        java.lang.NullPointerException - if any key or value is null
      • of

        public static <K,​V> java.util.Map<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 unmodifiable map containing ten mappings.
        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:
        java.lang.IllegalArgumentException - if there are any duplicate keys
        java.lang.NullPointerException - if any key or value is null
      • entry

        public static <K,​V> java.util.Map.Entry<K,​V> entry​(K key,
                                                                       V value)
        Creates an immutable Map.Entry from the given key and value.
        Type Parameters:
        K - Key type.
        V - Value type.
        Parameters:
        key - Key to set in the Map.Entry.
        value - Value to set in the Map.Entry.
        Returns:
        Returns the created entry.
        Throws:
        java.lang.NullPointerException - if the key or value are null.
      • ofEntries

        @SafeVarargs
        public static <K,​V> java.util.Map<K,​V> ofEntries​(java.util.Map.Entry<? extends K,​? extends V>... entries)
        Creates an unmodifiable Map from an array of Map.Entry values.
        Type Parameters:
        K - Map key type.
        V - Map value type.
        Parameters:
        entries - Map entries to add to the created Map.
        Returns:
        Returns an unmodifiable map of the given entries.
      • toUnmodifiableMap

        public static <T,​K,​U> java.util.stream.Collector<T,​?,​java.util.Map<K,​U>> toUnmodifiableMap​(java.util.function.Function<? super T,​? extends K> keyMapper,
                                                                                                                                 java.util.function.Function<? super T,​? extends U> valueMapper)
        Creates a collector that collects into an unmodifiable Map.

        This is a polyfill equivalent of Java 10's Collectors#toUnmodifiableMap.

        Type Parameters:
        T - the type to retrieve keys and values from.
        K - the Map's key type.
        U - the Map's value type.
        Parameters:
        keyMapper - Function that retrieves the key.
        valueMapper - Function that retrieves the value.
        Returns:
        a Collector that accumulates the entries into an unmodifiable Map.