Package io.vertx.core

## Interface MultiMap

- All Superinterfaces:
    `Iterable<Map.Entry<String,​String>>`

      public interface MultiMap
      extends Iterable<Map.Entry<String,​String>>

  This class represents a MultiMap of String keys to a List of String values.

  It's useful in Vert.x to represent things in Vert.x like HTTP headers and HTTP parameters which allow multiple values for keys.

  Author:
    Norman Maurer, Tim Fox

- - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Default Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `MultiMap` | `add​(CharSequence name, CharSequence value)` | Like `add(String, String)` but accepting `CharSequence` as parameters
    `MultiMap` | `add​(CharSequence name, Iterable<CharSequence> values)` | Like `add(String, Iterable)` but accepting `CharSequence` as parameters
    `MultiMap` | `add​(String name, Iterable<String> values)` | Adds a new values under the specified name
    `MultiMap` | `add​(String name, String value)` | Adds a new value with the specified name and value.
    `MultiMap` | `addAll​(MultiMap map)` | Adds all the entries from another MultiMap to this one
    `MultiMap` | `addAll​(Map<String,​String> headers)` | Adds all the entries from a Map to this
    `static MultiMap` | `caseInsensitiveMultiMap()` | Create a multi-map implementation with case insensitive keys, for instance it can be used to hold some HTTP headers.
    `MultiMap` | `clear()` | Removes all
    `boolean` | `contains​(CharSequence name)` | Like `contains(String)` but accepting a `CharSequence` as a parameter
    `default boolean` | `contains​(CharSequence name, CharSequence value, boolean caseInsensitive)` | Like `contains(String, String, boolean)` but accepting `CharSequence` parameters.
    `boolean` | `contains​(String name)` | Checks to see if there is a value with the specified name
    `default boolean` | `contains​(String name, String value, boolean caseInsensitive)` | Check if there is a header with the specified `name` and `value`.
    `default MultiMap` | `copy()` | Returns a mutable copy of this instance.
    `MultiMap` | `copy​(boolean mutable)` | Returns a copy of this instance.
    `default List<Map.Entry<String,​String>>` | `entries()` | Returns all entries in the multi-map.
    `default void` | `forEach​(BiConsumer<String,​String> action)` | Allows iterating over the entries in the map
    `String` | `get​(CharSequence name)` |
    `String` | `get​(String name)` | Returns the value of with the specified name.
    `List<String>` | `getAll​(CharSequence name)` | Like `getAll(String)` but accepting a `CharSequence` as a parameter
    `List<String>` | `getAll​(String name)` | Returns the values with the specified name
    `boolean` | `isEmpty()` | Return true if empty
    `boolean` | `isMutable()` |
    `Set<String>` | `names()` | Gets a immutable `Set` of all names
    `MultiMap` | `remove​(CharSequence name)` | Like `remove(String)` but accepting `CharSequence` as parameters
    `MultiMap` | `remove​(String name)` | Removes the value with the given name
    `MultiMap` | `set​(CharSequence name, CharSequence value)` | Like `set(String, String)` but accepting `CharSequence` as parameters
    `MultiMap` | `set​(CharSequence name, Iterable<CharSequence> values)` | Like `set(String, Iterable)` but accepting `CharSequence` as parameters
    `MultiMap` | `set​(String name, Iterable<String> values)` | Sets values for the specified name.
    `MultiMap` | `set​(String name, String value)` | Sets a `value` under the specified `name`.
    `MultiMap` | `setAll​(MultiMap map)` | Cleans this instance.
    `MultiMap` | `setAll​(Map<String,​String> headers)` | Cleans and set all values of the given instance
    `int` | `size()` | Return the number of keys.

    - ### Methods inherited from interface java.lang.Iterable

      `forEach, iterator, spliterator`

- - ### Method Detail

    - #### caseInsensitiveMultiMap

          static MultiMap caseInsensitiveMultiMap()

      Create a multi-map implementation with case insensitive keys, for instance it can be used to hold some HTTP headers.
      Returns:
        the multi-map

    - #### get

          String get​(CharSequence name)

    - #### get

          String get​(String name)

      Returns the value of with the specified name. If there are more than one values for the specified name, the first value is returned.
      Parameters:
        `name` - The name of the header to search
      Returns:
        The first header value or `null` if there is no such entry

    - #### getAll

          List<String> getAll​(String name)

      Returns the values with the specified name
      Parameters:
        `name` - The name to search
      Returns:
        A immutable `List` of values which will be empty if no values are found

    - #### getAll

          List<String> getAll​(CharSequence name)

      Like `getAll(String)` but accepting a `CharSequence` as a parameter

    - #### forEach

          default void forEach​(BiConsumer<String,​String> action)

      Allows iterating over the entries in the map

    - #### entries

          default List<Map.Entry<String,​String>> entries()

      Returns all entries in the multi-map.
      Returns:
        A immutable `List` of the name-value entries, which will be empty if no pairs are found

    - #### contains

          boolean contains​(String name)

      Checks to see if there is a value with the specified name
      Parameters:
        `name` - The name to search for
      Returns:
        true if at least one entry is found

    - #### contains

          boolean contains​(CharSequence name)

      Like `contains(String)` but accepting a `CharSequence` as a parameter

    - #### contains

          default boolean contains​(String name,
                                   String value,
                                   boolean caseInsensitive)

      Check if there is a header with the specified `name` and `value`. If `caseInsensitive` is `true`, `value` is compared in a case-insensitive way.
      Parameters:
        `name` - the name to search for
        `value` - the value to search for
      Returns:
        `true` if at least one entry is found

    - #### contains

          default boolean contains​(CharSequence name,
                                   CharSequence value,
                                   boolean caseInsensitive)

      Like `contains(String, String, boolean)` but accepting `CharSequence` parameters.

    - #### isEmpty

          boolean isEmpty()

      Return true if empty

    - #### names

          Set<String> names()

      Gets a immutable `Set` of all names
      Returns:
        A `Set` of all names

    - #### add

          MultiMap add​(String name,
                       String value)

      Adds a new value with the specified name and value.
      Parameters:
        `name` - The name
        `value` - The value being added
      Returns:
        a reference to this, so the API can be used fluently

    - #### add

          MultiMap add​(CharSequence name,
                       CharSequence value)

      Like `add(String, String)` but accepting `CharSequence` as parameters

    - #### add

          MultiMap add​(String name,
                       Iterable<String> values)

      Adds a new values under the specified name
      Parameters:
        `name` - The name being set
        `values` - The values
      Returns:
        a reference to this, so the API can be used fluently

    - #### add

          MultiMap add​(CharSequence name,
                       Iterable<CharSequence> values)

      Like `add(String, Iterable)` but accepting `CharSequence` as parameters

    - #### addAll

          MultiMap addAll​(MultiMap map)

      Adds all the entries from another MultiMap to this one
      Returns:
        a reference to this, so the API can be used fluently

    - #### addAll

          MultiMap addAll​(Map<String,​String> headers)

      Adds all the entries from a Map to this
      Returns:
        a reference to this, so the API can be used fluently

    - #### set

          MultiMap set​(String name,
                       String value)

      Sets a `value` under the specified `name`.

      If there is an existing header with the same name, it is removed. Setting a `null` value removes the entry.

      Parameters:
        `name` - The name
        `value` - The value
      Returns:
        a reference to this, so the API can be used fluently

    - #### set

          MultiMap set​(CharSequence name,
                       CharSequence value)

      Like `set(String, String)` but accepting `CharSequence` as parameters

    - #### set

          MultiMap set​(String name,
                       Iterable<String> values)

      Sets values for the specified name.
      Parameters:
        `name` - The name of the headers being set
        `values` - The values of the headers being set
      Returns:
        a reference to this, so the API can be used fluently

    - #### set

          MultiMap set​(CharSequence name,
                       Iterable<CharSequence> values)

      Like `set(String, Iterable)` but accepting `CharSequence` as parameters

    - #### setAll

          MultiMap setAll​(MultiMap map)

      Cleans this instance.
      Returns:
        a reference to this, so the API can be used fluently

    - #### setAll

          MultiMap setAll​(Map<String,​String> headers)

      Cleans and set all values of the given instance
      Returns:
        a reference to this, so the API can be used fluently

    - #### remove

          MultiMap remove​(String name)

      Removes the value with the given name
      Parameters:
        `name` - The name of the value to remove
      Returns:
        a reference to this, so the API can be used fluently

    - #### remove

          MultiMap remove​(CharSequence name)

      Like `remove(String)` but accepting `CharSequence` as parameters

    - #### clear

          MultiMap clear()

      Removes all
      Returns:
        a reference to this, so the API can be used fluently

    - #### size

          int size()

      Return the number of keys.

    - #### isMutable

          boolean isMutable()

      Returns:
        whether this instance can be mutated.

    - #### copy

          MultiMap copy​(boolean mutable)

      Returns a copy of this instance.
      Parameters:
        `mutable` - whether the copy can be mutated
      Returns:
        a copy of this instance

    - #### copy

          default MultiMap copy()

      Returns a mutable copy of this instance.
      Returns:
        a mutable copy of this instance