# Class AbstractMap<K,V>

java.lang.Object
java.util.AbstractMap<K,V>

All Implemented Interfaces:
  `Map<K,V>`

Direct Known Subclasses:
  `HashMap, IdentityHashMap, TreeMap`

public abstract class AbstractMap<K,V> extends Object implements Map<K,V>
This class is an abstract implementation of the `Map` interface. This implementation does not support adding. A subclass must implement the abstract method entrySet().

Since:
  1.2

- ## Nested Class Summary

  Nested Classes
  Modifier and Type
  Class
  Description
  `static class`
  `AbstractMap.SimpleEntry<K,V>`
  A key-value mapping.
  `static class`
  `AbstractMap.SimpleImmutableEntry<K,V>`
  An immutable key-value mapping.

  ### Nested classes/interfaces inherited from interface Map

  `Map.Entry<K,V>`

- ## Constructor Summary

  Constructors
  Modifier
  Constructor
  Description
  `protected`
  `AbstractMap()`
  Constructs a new instance of this `AbstractMap`.

- ## Method Summary

  Modifier and Type
  Method
  Description
  `void`
  `clear()`
  Removes all elements from this map, leaving it empty.
  `boolean`
  `containsKey(Object key)`
  Returns whether this map contains the specified key.
  `boolean`
  `containsValue(Object value)`
  Returns whether this map contains the specified value.
  `abstract Set<Map.Entry<K,V>>`
  `entrySet()`
  Returns a set containing all of the mappings in this map.
  `boolean`
  `equals(Object object)`
  Compares the specified object to this instance, and returns `true` if the specified object is a map and both maps contain the same mappings.
  `V`
  `get(Object key)`
  Returns the value of the mapping with the specified key.
  `int`
  `hashCode()`
  Returns the hash code for this object.
  `boolean`
  `isEmpty()`
  Returns whether this map is empty.
  `Set<K>`
  `keySet()`
  Returns a set of the keys contained in this map.
  `V`
  `put(K key, V value)`
  Maps the specified key to the specified value.
  `void`
  `putAll(Map<? extends K, ? extends V> map)`
  Copies every mapping in the specified map to this map.
  `V`
  `remove(Object key)`
  Removes a mapping with the specified key from this Map.
  `int`
  `size()`
  Returns the number of elements in this map.
  `String`
  `toString()`
  Returns the string representation of this map.
  `Collection<V>`
  `values()`
  Returns a collection of the values contained in this map.

  ### Methods inherited from class Object

  `clone, getClass, notify, notifyAll, wait, wait, wait`

- ## Constructor Details

  - ### AbstractMap

    protected AbstractMap()
    Constructs a new instance of this `AbstractMap`.

- ## Method Details

  - ### clear

    public void clear()
    Removes all elements from this map, leaving it empty.
    Specified by:
      `clear` in interface `Map<K,V>`
    Throws:
      `UnsupportedOperationException` - if removing from this map is not supported.
    See Also:
      - `isEmpty()`
      - `size()`

  - ### containsKey

    public boolean containsKey(Object key)
    Returns whether this map contains the specified key.
    Specified by:
      `containsKey` in interface `Map<K,V>`
    Parameters:
      `key` - the key to search for.
    Returns:
      `true` if this map contains the specified key, `false` otherwise.

  - ### containsValue

    public boolean containsValue(Object value)
    Returns whether this map contains the specified value.
    Specified by:
      `containsValue` in interface `Map<K,V>`
    Parameters:
      `value` - the value to search for.
    Returns:
      `true` if this map contains the specified value, `false` otherwise.

  - ### entrySet

    public abstract Set<Map.Entry<K,V>> entrySet()
    Returns a set containing all of the mappings in this map. Each mapping is an instance of `Map.Entry`. As the set is backed by this map, changes in one will be reflected in the other.
    Specified by:
      `entrySet` in interface `Map<K,V>`
    Returns:
      a set of the mappings.

  - ### equals

    public boolean equals(Object object)
    Compares the specified object to this instance, and returns `true` if the specified object is a map and both maps contain the same mappings.
    Specified by:
      `equals` in interface `Map<K,V>`
    Overrides:
      `equals` in class `Object`
    Parameters:
      `object` - the object to compare with this object.
    Returns:
      boolean `true` if the object is the same as this object, and `false` if it is different from this object.
    See Also:
      - `hashCode()`
      - `entrySet()`

  - ### get

    public V get(Object key)
    Returns the value of the mapping with the specified key.
    Specified by:
      `get` in interface `Map<K,V>`
    Parameters:
      `key` - the key.
    Returns:
      the value of the mapping with the specified key, or `null` if no mapping for the specified key is found.

  - ### hashCode

    public int hashCode()
    Returns the hash code for this object. Objects which are equal must return the same value for this method.
    Specified by:
      `hashCode` in interface `Map<K,V>`
    Overrides:
      `hashCode` in class `Object`
    Returns:
      the hash code of this object.
    See Also:
      - `equals(Object)`

  - ### isEmpty

    public boolean isEmpty()
    Returns whether this map is empty.
    Specified by:
      `isEmpty` in interface `Map<K,V>`
    Returns:
      `true` if this map has no elements, `false` otherwise.
    See Also:
      - `size()`

  - ### keySet

    public Set<K> keySet()
    Returns a set of the keys contained in this map. The set is backed by this map so changes to one are reflected by the other. The returned set does not support adding.
    Specified by:
      `keySet` in interface `Map<K,V>`
    Returns:
      a set of the keys.

  - ### put

    public V put(K key, V value)
    Maps the specified key to the specified value.
    Specified by:
      `put` in interface `Map<K,V>`
    Parameters:
      `key` - the key.
      `value` - the value.
    Returns:
      the value of any previous mapping with the specified key or `null` if there was no mapping.
    Throws:
      `UnsupportedOperationException` - if adding to this map is not supported.
      `ClassCastException` - if the class of the key or value is inappropriate for this map.
      `IllegalArgumentException` - if the key or value cannot be added to this map.
      `NullPointerException` - if the key or value is `null` and this Map does not support `null` keys or values.

  - ### putAll

    public void putAll(Map<? extends K, ? extends V> map)
    Copies every mapping in the specified map to this map.
    Specified by:
      `putAll` in interface `Map<K,V>`
    Parameters:
      `map` - the map to copy mappings from.
    Throws:
      `UnsupportedOperationException` - if adding to this map is not supported.
      `ClassCastException` - if the class of a key or value is inappropriate for this map.
      `IllegalArgumentException` - if a key or value cannot be added to this map.
      `NullPointerException` - if a key or value is `null` and this map does not support `null` keys or values.

  - ### remove

    public V remove(Object key)
    Removes a mapping with the specified key from this Map.
    Specified by:
      `remove` in interface `Map<K,V>`
    Parameters:
      `key` - the key of the mapping to remove.
    Returns:
      the value of the removed mapping or `null` if no mapping for the specified key was found.
    Throws:
      `UnsupportedOperationException` - if removing from this map is not supported.

  - ### size

    public int size()
    Returns the number of elements in this map.
    Specified by:
      `size` in interface `Map<K,V>`
    Returns:
      the number of elements in this map.

  - ### toString

    public String toString()
    Returns the string representation of this map.
    Overrides:
      `toString` in class `Object`
    Returns:
      the string representation of this map.

  - ### values

    public Collection<V> values()
    Returns a collection of the values contained in this map. The collection is backed by this map so changes to one are reflected by the other. The collection supports remove, removeAll, retainAll and clear operations, and it does not support add or addAll operations.

    This method returns a collection which is the subclass of AbstractCollection. The iterator method of this subclass returns a "wrapper object" over the iterator of map's entrySet(). The `size` method wraps the map's size method and the `contains` method wraps the map's containsValue method.

    The collection is created when this method is called for the first time and returned in response to all subsequent calls. This method may return different collections when multiple concurrent calls occur to this method, since no synchronization is performed.

    Specified by:
      `values` in interface `Map<K,V>`
    Returns:
      a collection of the values contained in this map.