# 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 java.lang.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(java.lang.Object key)`
  Returns whether this map contains the specified key.
  `boolean`
  `containsValue(java.lang.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(java.lang.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(java.lang.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(java.lang.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 java.lang.Object

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

  ### Methods inherited from interface Map

  `compute, computeIfAbsent, computeIfPresent, forEach, getOrDefault, merge, putIfAbsent, remove, replace, replace, replaceAll`

- ## 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.

    ###### Throws

    - `UnsupportedOperationException`: if removing from this map is not supported.

    ###### See also

    - #isEmpty()

    - #size()

    Specified by:
      `clear` in interface `Map<K,V>`

  - ### containsKey

    public boolean containsKey(java.lang.Object key)

    Returns whether this map contains the specified key.

    ###### Parameters

    - `key`: the key to search for.

    ###### Returns

    Specified by:
      `containsKey` in interface `Map<K,V>`
    Returns:
      `true` if this map contains the specified key, `false` otherwise.

  - ### containsValue

    public boolean containsValue(java.lang.Object value)

    Returns whether this map contains the specified value.

    ###### Parameters

    - `value`: the value to search for.

    ###### Returns

    Specified by:
      `containsValue` in interface `Map<K,V>`
    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.

    ###### Returns

    a set of the mappings.

    Specified by:
      `entrySet` in interface `Map<K,V>`

  - ### equals

    public boolean equals(java.lang.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.

    ###### Parameters

    - `object`: the object to compare with this object.

    ###### Returns

    Specified by:
      `equals` in interface `Map<K,V>`
    Overrides:
      `equals` in class `java.lang.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(java.lang.Object key)

    Returns the value of the mapping with the specified key.

    ###### Parameters

    - `key`: the key.

    ###### Returns

    Specified by:
      `get` in interface `Map<K,V>`
    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.

    ###### Returns

    the hash code of this object.

    ###### See also

    - #equals(Object)
    Specified by:
      `hashCode` in interface `Map<K,V>`
    Overrides:
      `hashCode` in class `java.lang.Object`

  - ### isEmpty

    public boolean isEmpty()

    Returns whether this map is empty.

    ###### Returns

    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.

    ###### Returns

    a set of the keys.

    Specified by:
      `keySet` in interface `Map<K,V>`

  - ### put

    public V put(K key, V value)

    Maps the specified key to the specified value.

    ###### Parameters

    - `key`: the key.

    - `value`: the value.

    ###### Returns

    Specified by:
      `put` in interface `Map<K,V>`
    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`: @throws 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`: @throws 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.

    ###### Parameters

    - `map`: the map to copy mappings from.

    ###### Throws

    - `UnsupportedOperationException`: if adding to this map is not supported.

    - `ClassCastException`: @throws 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`: @throws NullPointerException if a key or value is `null` and this map does not support `null` keys or values.

    Specified by:
      `putAll` in interface `Map<K,V>`

  - ### remove

    public V remove(java.lang.Object key)

    Removes a mapping with the specified key from this Map.

    ###### Parameters

    - `key`: the key of the mapping to remove.

    ###### Returns

    Specified by:
      `remove` in interface `Map<K,V>`
    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.

    ###### Returns

    the number of elements in this map.

    Specified by:
      `size` in interface `Map<K,V>`

  - ### toString

    public String toString()

    Returns the string representation of this map.

    ###### Returns

    the string representation of this map.

    Overrides:
      `toString` in class `java.lang.Object`

  - ### 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.

    ###### Returns

    a collection of the values contained in this map.

    Specified by:
      `values` in interface `Map<K,V>`