Class MapUtils

java.lang.Object
software.amazon.smithy.utils.MapUtils

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

    Modifier and Type
    Method
    Description
    static <K, V> Map<K,V>
    copyOf(Map<? extends K,? extends V> map)
    Creates an immutable copy of the given map.
    static <K, V> Map.Entry<K,V>
    entry(K key, V value)
    Creates an immutable Map.Entry from the given key and value.
    static <K, V> Map<K,V>
    of()
    Returns an unmodifiable map containing zero mappings.
    static <K, V> Map<K,V>
    of(K k1, V v1)
    Returns an unmodifiable map containing a single mapping.
    static <K, V> Map<K,V>
    of(K k1, V v1, K k2, V v2)
    Returns an unmodifiable map containing two mappings.
    static <K, V> 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> 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> 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> 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> 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> 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> 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> 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> Map<K,V>
    ofEntries(Map.Entry<? extends K,? extends V>... entries)
    Creates an unmodifiable Map from an array of Map.Entry values.
    static <K, V> Map<K,V>
    orderedCopyOf(Map<? extends K,? extends V> map)
    Creates an ordered immutable copy of the given map.
    static <T, K, U> Collector<T,?,Map<K,U>>
    toUnmodifiableMap(Function<? super T,? extends K> keyMapper, 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 Details

    • copyOf

      public static <K, V> Map<K,V> copyOf(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> Map<K,V> orderedCopyOf(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> 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> 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:
      NullPointerException - if the key or the value is null
    • of

      public static <K, V> 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:
      IllegalArgumentException - if the keys are duplicates
      NullPointerException - if any key or value is null
    • of

      public static <K, V> 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:
      IllegalArgumentException - if there are any duplicate keys
      NullPointerException - if any key or value is null
    • of

      public static <K, V> 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:
      IllegalArgumentException - if there are any duplicate keys
      NullPointerException - if any key or value is null
    • of

      public static <K, V> 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:
      IllegalArgumentException - if there are any duplicate keys
      NullPointerException - if any key or value is null
    • of

      public static <K, V> 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:
      IllegalArgumentException - if there are any duplicate keys
      NullPointerException - if any key or value is null
    • of

      public static <K, V> 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:
      IllegalArgumentException - if there are any duplicate keys
      NullPointerException - if any key or value is null
    • of

      public static <K, V> 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:
      IllegalArgumentException - if there are any duplicate keys
      NullPointerException - if any key or value is null
    • of

      public static <K, V> 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:
      IllegalArgumentException - if there are any duplicate keys
      NullPointerException - if any key or value is null
    • of

      public static <K, V> 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:
      IllegalArgumentException - if there are any duplicate keys
      NullPointerException - if any key or value is null
    • entry

      public static <K, V> 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:
      NullPointerException - if the key or value are null.
    • ofEntries

      @SafeVarargs public static <K, V> Map<K,V> ofEntries(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> Collector<T,?,Map<K,U>> toUnmodifiableMap(Function<? super T,? extends K> keyMapper, 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.