## com.google.common.collect
Interface SetMultimap<K,V>

All Superinterfaces:
  Multimap<K,V>

All Known Subinterfaces:
  SortedSetMultimap<K,V>

All Known Implementing Classes:
  ForwardingSetMultimap, ForwardingSortedSetMultimap, HashMultimap, ImmutableSetMultimap, LinkedHashMultimap, TreeMultimap

    @GwtCompatible
    public interface SetMultimap<K,V>

extends Multimap<K,V>

A `Multimap` that cannot hold duplicate key-value pairs. Adding a key-value pair that's already in the multimap has no effect. See the `Multimap` documentation for information common to all multimaps.

The `get(K)`, `removeAll(java.lang.Object)`, and `replaceValues(K, java.lang.Iterable<? extends V>)` methods each return a `Set` of values, while `entries()` returns a `Set` of map entries. Though the method signature doesn't say so explicitly, the map returned by `asMap()` has `Set` values.

If the values corresponding to a single key should be ordered according to a `Comparator` (or the natural order), see the `SortedSetMultimap` subinterface.

See the Guava User Guide article on `Multimap`.

Since:
  2.0 (imported from Google Collections Library)
Author:
  Jared Levy

Method Summary
`Map<K,Collection<V>>` `asMap()` Returns a map view that associates each key with the corresponding values in the multimap.
`Set<Map.Entry<K,V>>` `entries()` Returns a collection of all key-value pairs.
`boolean` `equals(Object obj)` Compares the specified object to this multimap for equality.
`Set<V>` `get(K key)` Returns a collection view of all values associated with a key.
`Set<V>` `removeAll(Object key)` Removes all values associated with a given key.
`Set<V>` `replaceValues(K key, Iterable<? extends V> values)` Stores a collection of values with the same key, replacing any existing values for that key.

Methods inherited from interface com.google.common.collect.Multimap
`clear, containsEntry, containsKey, containsValue, hashCode, isEmpty, keys, keySet, put, putAll, putAll, remove, size, values`

Method Detail

### get

    Set<V> get(@Nullable
               K key)

  Returns a collection view of all values associated with a key. If no mappings in the multimap have the provided key, an empty collection is returned.

  Changes to the returned collection will update the underlying multimap, and vice versa.

  Because a `SetMultimap` has unique values for a given key, this method returns a `Set`, instead of the `Collection` specified in the `Multimap` interface.

  Specified by:
    `get` in interface `Multimap<K,V>`
  Parameters:
    `key` - key to search for in multimap
  Returns:
    the collection of values that the key maps to

### removeAll

    Set<V> removeAll(@Nullable
                     Object key)

  Removes all values associated with a given key.

  Because a `SetMultimap` has unique values for a given key, this method returns a `Set`, instead of the `Collection` specified in the `Multimap` interface.

  Specified by:
    `removeAll` in interface `Multimap<K,V>`
  Parameters:
    `key` - key of entries to remove from the multimap
  Returns:
    the collection of removed values, or an empty collection if no values were associated with the provided key. The collection may be modifiable, but updating it will have no effect on the multimap.

### replaceValues

    Set<V> replaceValues(K key,
                         Iterable<? extends V> values)

  Stores a collection of values with the same key, replacing any existing values for that key.

  Because a `SetMultimap` has unique values for a given key, this method returns a `Set`, instead of the `Collection` specified in the `Multimap` interface.

  Any duplicates in `values` will be stored in the multimap once.

  Specified by:
    `replaceValues` in interface `Multimap<K,V>`
  Parameters:
    `key` - key to store in the multimap
    `values` - values to store in the multimap
  Returns:
    the collection of replaced values, or an empty collection if no values were previously associated with the key. The collection may be modifiable, but updating it will have no effect on the multimap.

### entries

    Set<Map.Entry<K,V>> entries()

  Returns a collection of all key-value pairs. Changes to the returned collection will update the underlying multimap, and vice versa. The entries collection does not support the `add` or `addAll` operations.

  Because a `SetMultimap` has unique values for a given key, this method returns a `Set`, instead of the `Collection` specified in the `Multimap` interface.

  Specified by:
    `entries` in interface `Multimap<K,V>`
  Returns:
    collection of map entries consisting of key-value pairs

### asMap

    Map<K,Collection<V>> asMap()

  Returns a map view that associates each key with the corresponding values in the multimap. Changes to the returned map, such as element removal, will update the underlying multimap. The map does not support `setValue()` on its entries, `put`, or `putAll`.

  When passed a key that is present in the map, `asMap().get(Object)` has the same behavior as `Multimap.get(K)`, returning a live collection. When passed a key that is not present, however, `asMap().get(Object)` returns `null` instead of an empty collection.

  Though the method signature doesn't say so explicitly, the returned map has `Set` values.

  Specified by:
    `asMap` in interface `Multimap<K,V>`
  Returns:
    a map view from a key to its collection of values

### equals

    boolean equals(@Nullable
                   Object obj)

  Compares the specified object to this multimap for equality.

  Two `SetMultimap` instances are equal if, for each key, they contain the same values. Equality does not depend on the ordering of keys or values.

  An empty `SetMultimap` is equal to any other empty `Multimap`, including an empty `ListMultimap`.

  Specified by:
    `equals` in interface `Multimap<K,V>`
  Overrides:
    `equals` in class `Object`

Copyright © 2010-2012. All Rights Reserved.