Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Nested Classes](https://developer.android.com/reference/java/util/AbstractMap#nestedclasses) \| [Protected Ctors](https://developer.android.com/reference/java/util/AbstractMap#proctors) \| [Methods](https://developer.android.com/reference/java/util/AbstractMap#pubmethods) \| [Protected Methods](https://developer.android.com/reference/java/util/AbstractMap#promethods) \| [Inherited Methods](https://developer.android.com/reference/java/util/AbstractMap#inhmethods)

# AbstractMap

` public abstract class AbstractMap `   
` extends https://developer.android.com/reference/java/lang/Object ` ` implements https://developer.android.com/reference/java/util/Map<K, V> `

|---|---|
| [java.lang.Object](https://developer.android.com/reference/java/lang/Object) ||
| ↳ | java.util.AbstractMap\<K, V\> |

Known direct subclasses [ConcurrentHashMap](https://developer.android.com/reference/java/util/concurrent/ConcurrentHashMap)\<K, V\>, [ConcurrentSkipListMap](https://developer.android.com/reference/java/util/concurrent/ConcurrentSkipListMap)\<K, V\>, [EnumMap](https://developer.android.com/reference/java/util/EnumMap)\<K extends [Enum](https://developer.android.com/reference/java/lang/Enum)\<K\>, V\>, [HashMap](https://developer.android.com/reference/java/util/HashMap)\<K, V\>, [IdentityHashMap](https://developer.android.com/reference/java/util/IdentityHashMap)\<K, V\>, [TreeMap](https://developer.android.com/reference/java/util/TreeMap)\<K, V\>, [WeakHashMap](https://developer.android.com/reference/java/util/WeakHashMap)\<K, V\> [ConcurrentHashMap](https://developer.android.com/reference/java/util/concurrent/ConcurrentHashMap)\<K, V\> A hash table supporting full concurrency of retrievals and high expected concurrency for updates. [ConcurrentSkipListMap](https://developer.android.com/reference/java/util/concurrent/ConcurrentSkipListMap)\<K, V\> A scalable concurrent `https://developer.android.com/reference/java/util/concurrent/ConcurrentNavigableMap` implementation. [EnumMap](https://developer.android.com/reference/java/util/EnumMap)\<K extends [Enum](https://developer.android.com/reference/java/lang/Enum)\<K\>, V\> A specialized `https://developer.android.com/reference/java/util/Map` implementation for use with enum type keys. [HashMap](https://developer.android.com/reference/java/util/HashMap)\<K, V\> Hash table based implementation of the `Map` interface. [IdentityHashMap](https://developer.android.com/reference/java/util/IdentityHashMap)\<K, V\> This class implements the `Map` interface with a hash table, using reference-equality in place of object-equality when comparing keys (and values). [TreeMap](https://developer.android.com/reference/java/util/TreeMap)\<K, V\> A Red-Black tree based `https://developer.android.com/reference/java/util/NavigableMap` implementation. [WeakHashMap](https://developer.android.com/reference/java/util/WeakHashMap)\<K, V\> Hash table based implementation of the `Map` interface, with *weak keys*. Known indirect subclasses [LinkedHashMap](https://developer.android.com/reference/java/util/LinkedHashMap)\<K, V\> [LinkedHashMap](https://developer.android.com/reference/java/util/LinkedHashMap)\<K, V\> Hash table and linked list implementation of the `Map` interface, with well-defined encounter order.

*** ** * ** ***

This class provides a skeletal implementation of the `Map` interface, to minimize the effort required to implement this interface.

To implement an unmodifiable map, the programmer needs only to extend this class and provide an implementation for the `entrySet` method, which returns a set-view of the map's mappings. Typically, the returned set will, in turn, be implemented atop `AbstractSet`. This set should not support the `add` or `remove` methods, and its iterator should not support the `remove` method.

To implement a modifiable map, the programmer must additionally override this class's `put` method (which otherwise throws an `UnsupportedOperationException`), and the iterator returned by `entrySet().iterator()` must additionally implement its `remove` method.

The programmer should generally provide a void (no argument) and map constructor, as per the recommendation in the `Map` interface specification.

The documentation for each non-abstract method in this class describes its implementation in detail. Each of these methods may be overridden if the map being implemented admits a more efficient implementation.

This class is a member of the [Java Collections Framework](https://reference/java/util/package-summary.html#CollectionsFramework).
**See also:**

- `https://developer.android.com/reference/java/util/Map`
- `https://developer.android.com/reference/java/util/Collection`

## Summary

| ### Nested classes ||
|---|---|
| ` class` | `https://developer.android.com/reference/java/util/AbstractMap.SimpleEntry<K, V>` An Entry maintaining a key and a value. |
| ` class` | `https://developer.android.com/reference/java/util/AbstractMap.SimpleImmutableEntry<K, V>` An unmodifiable Entry maintaining a key and a value. |

| ### Protected constructors ||
|---|---|
| ` https://developer.android.com/reference/java/util/AbstractMap#AbstractMap()() ` Sole constructor. |

| ### Public methods ||
|---|---|
| ` void` | ` https://developer.android.com/reference/java/util/AbstractMap#clear()() ` Removes all of the mappings from this map (optional operation). |
| ` boolean` | ` https://developer.android.com/reference/java/util/AbstractMap#containsKey(java.lang.Object)(https://developer.android.com/reference/java/lang/Object key) ` Returns `true` if this map contains a mapping for the specified key. |
| ` boolean` | ` https://developer.android.com/reference/java/util/AbstractMap#containsValue(java.lang.Object)(https://developer.android.com/reference/java/lang/Object value) ` Returns `true` if this map maps one or more keys to the specified value. |
| ` abstract https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/util/Map.Entry<K, V>>` | ` https://developer.android.com/reference/java/util/AbstractMap#entrySet()() ` Returns a `https://developer.android.com/reference/java/util/Set` view of the mappings contained in this map. |
| ` boolean` | ` https://developer.android.com/reference/java/util/AbstractMap#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object o) ` Compares the specified object with this map for equality. |
| ` V` | ` https://developer.android.com/reference/java/util/AbstractMap#get(java.lang.Object)(https://developer.android.com/reference/java/lang/Object key) ` Returns the value to which the specified key is mapped, or `null` if this map contains no mapping for the key. |
| ` int` | ` https://developer.android.com/reference/java/util/AbstractMap#hashCode()() ` Returns the hash code value for this map. |
| ` boolean` | ` https://developer.android.com/reference/java/util/AbstractMap#isEmpty()() ` Returns `true` if this map contains no key-value mappings. |
| ` https://developer.android.com/reference/java/util/Set<K>` | ` https://developer.android.com/reference/java/util/AbstractMap#keySet()() ` Returns a `https://developer.android.com/reference/java/util/Set` view of the keys contained in this map. |
| ` V` | ` https://developer.android.com/reference/java/util/AbstractMap#put(K,%20V)(K key, V value) ` Associates the specified value with the specified key in this map (optional operation). |
| ` void` | ` https://developer.android.com/reference/java/util/AbstractMap#putAll(java.util.Map<?%20extends%20K,?%20extends%20V>)(https://developer.android.com/reference/java/util/Map<? extends K, ? extends V> m) ` Copies all of the mappings from the specified map to this map (optional operation). |
| ` V` | ` https://developer.android.com/reference/java/util/AbstractMap#remove(java.lang.Object)(https://developer.android.com/reference/java/lang/Object key) ` Removes the mapping for a key from this map if it is present (optional operation). |
| ` int` | ` https://developer.android.com/reference/java/util/AbstractMap#size()() ` Returns the number of key-value mappings in this map. |
| ` https://developer.android.com/reference/java/lang/String` | ` https://developer.android.com/reference/java/util/AbstractMap#toString()() ` Returns a string representation of this map. |
| ` https://developer.android.com/reference/java/util/Collection<V>` | ` https://developer.android.com/reference/java/util/AbstractMap#values()() ` Returns a `https://developer.android.com/reference/java/util/Collection` view of the values contained in this map. |

| ### Protected methods ||
|---|---|
| ` https://developer.android.com/reference/java/lang/Object` | ` https://developer.android.com/reference/java/util/AbstractMap#clone()() ` Returns a shallow copy of this `AbstractMap` instance: the keys and values themselves are not cloned. |

### Inherited methods

From class ` https://developer.android.com/reference/java/lang/Object ` ` https://developer.android.com/reference/java/lang/Object` ` https://developer.android.com/reference/java/lang/Object#clone()() `

Creates and returns a copy of this object.
` boolean` ` https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object obj) `

Indicates whether some other object is "equal to" this one.
` void` ` https://developer.android.com/reference/java/lang/Object#finalize()() `

Called by the garbage collector on an object when garbage collection determines that there are no more references to the object.
` final https://developer.android.com/reference/java/lang/Class<?>` ` https://developer.android.com/reference/java/lang/Object#getClass()() `

Returns the runtime class of this `Object`.
` int` ` https://developer.android.com/reference/java/lang/Object#hashCode()() `

Returns a hash code value for the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#notify()() `

Wakes up a single thread that is waiting on this object's monitor.
` final void` ` https://developer.android.com/reference/java/lang/Object#notifyAll()() `

Wakes up all threads that are waiting on this object's monitor.
` https://developer.android.com/reference/java/lang/String` ` https://developer.android.com/reference/java/lang/Object#toString()() `

Returns a string representation of the object.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long,%20int)(long timeoutMillis, int nanos) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait(long)(long timeoutMillis) `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*, or until a certain amount of real time has elapsed.
` final void` ` https://developer.android.com/reference/java/lang/Object#wait()() `

Causes the current thread to wait until it is awakened, typically by being *notified* or *interrupted*.
From interface ` https://developer.android.com/reference/java/util/Map ` ` abstract void` ` https://developer.android.com/reference/java/util/Map#clear()() `

Removes all of the mappings from this map (optional operation).
` default V` ` https://developer.android.com/reference/java/util/Map#compute(K,%20java.util.function.BiFunction<?%20super%20K,?%20super%20V,?%20extends%20V>)(K key, https://developer.android.com/reference/java/util/function/BiFunction<? super K, ? super V, ? extends V> remappingFunction) `

Attempts to compute a mapping for the specified key and its current mapped value, or `null` if there is no current mapping (optional operation).
` default V` ` https://developer.android.com/reference/java/util/Map#computeIfAbsent(K,%20java.util.function.Function<?%20super%20K,?%20extends%20V>)(K key, https://developer.android.com/reference/java/util/function/Function<? super K, ? extends V> mappingFunction) `

If the specified key is not already associated with a value (or is mapped to `null`), attempts to compute its value using the given mapping function and enters it into this map unless `null` (optional operation).
` default V` ` https://developer.android.com/reference/java/util/Map#computeIfPresent(K,%20java.util.function.BiFunction<?%20super%20K,?%20super%20V,?%20extends%20V>)(K key, https://developer.android.com/reference/java/util/function/BiFunction<? super K, ? super V, ? extends V> remappingFunction) `

If the value for the specified key is present and non-null, attempts to compute a new mapping given the key and its current mapped value (optional operation).
` abstract boolean` ` https://developer.android.com/reference/java/util/Map#containsKey(java.lang.Object)(https://developer.android.com/reference/java/lang/Object key) `

Returns `true` if this map contains a mapping for the specified key.
` abstract boolean` ` https://developer.android.com/reference/java/util/Map#containsValue(java.lang.Object)(https://developer.android.com/reference/java/lang/Object value) `

Returns `true` if this map maps one or more keys to the specified value.
` static <K, V> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#copyOf(java.util.Map<?%20extends%20K,?%20extends%20V>)(https://developer.android.com/reference/java/util/Map<? extends K, ? extends V> map) `

Returns an [unmodifiable Map](https://developer.android.com/reference/java/util/AbstractMap#unmodifiable) containing the entries of the given Map.
` static <K, V> https://developer.android.com/reference/java/util/Map.Entry<K, V>` ` https://developer.android.com/reference/java/util/Map#entry(K,%20V)(K k, V v) `

Returns an unmodifiable `https://developer.android.com/reference/java/util/Map.Entry` containing the given key and value.
` abstract https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/util/Map.Entry<K, V>>` ` https://developer.android.com/reference/java/util/Map#entrySet()() `

Returns a `https://developer.android.com/reference/java/util/Set` view of the mappings contained in this map.
` abstract boolean` ` https://developer.android.com/reference/java/util/Map#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object o) `

Compares the specified object with this map for equality.
` default void` ` https://developer.android.com/reference/java/util/Map#forEach(java.util.function.BiConsumer<?%20super%20K,?%20super%20V>)(https://developer.android.com/reference/java/util/function/BiConsumer<? super K, ? super V> action) `

Performs the given action for each entry in this map until all entries have been processed or the action throws an exception.
` abstract V` ` https://developer.android.com/reference/java/util/Map#get(java.lang.Object)(https://developer.android.com/reference/java/lang/Object key) `

Returns the value to which the specified key is mapped, or `null` if this map contains no mapping for the key.
` default V` ` https://developer.android.com/reference/java/util/Map#getOrDefault(java.lang.Object,%20V)(https://developer.android.com/reference/java/lang/Object key, V defaultValue) `

Returns the value to which the specified key is mapped, or `defaultValue` if this map contains no mapping for the key.
` abstract int` ` https://developer.android.com/reference/java/util/Map#hashCode()() `

Returns the hash code value for this map.
` abstract boolean` ` https://developer.android.com/reference/java/util/Map#isEmpty()() `

Returns `true` if this map contains no key-value mappings.
` abstract https://developer.android.com/reference/java/util/Set<K>` ` https://developer.android.com/reference/java/util/Map#keySet()() `

Returns a `https://developer.android.com/reference/java/util/Set` view of the keys contained in this map.
` default V` ` https://developer.android.com/reference/java/util/Map#merge(K,%20V,%20java.util.function.BiFunction<?%20super%20V,?%20super%20V,?%20extends%20V>)(K key, V value, https://developer.android.com/reference/java/util/function/BiFunction<? super V, ? super V, ? extends V> remappingFunction) `

If the specified key is not already associated with a value or is associated with null, associates it with the given non-null value (optional operation).
` static <K, V> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#of(K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V)(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> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#of(K,%20V,%20K,%20V,%20K,%20V,%20K,%20V)(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> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#of(K,%20V)(K k1, V v1) `

Returns an unmodifiable map containing a single mapping.
` static <K, V> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#of(K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V)(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> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#of(K,%20V,%20K,%20V)(K k1, V v1, K k2, V v2) `

Returns an unmodifiable map containing two mappings.
` static <K, V> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#of(K,%20V,%20K,%20V,%20K,%20V)(K k1, V v1, K k2, V v2, K k3, V v3) `

Returns an unmodifiable map containing three mappings.
` static <K, V> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#of()() `

Returns an unmodifiable map containing zero mappings.
` static <K, V> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#of(K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V)(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> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#of(K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V)(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> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#of(K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V)(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> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#of(K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V,%20K,%20V)(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> https://developer.android.com/reference/java/util/Map<K, V>` ` https://developer.android.com/reference/java/util/Map#ofEntries(java.util.Map.Entry<?%20extends%20K,?%20extends%20V>[])(https://developer.android.com/reference/java/util/Map.Entry<? extends K, ? extends V> entries) `

Returns an unmodifiable map containing keys and values extracted from the given entries.
` abstract V` ` https://developer.android.com/reference/java/util/Map#put(K,%20V)(K key, V value) `

Associates the specified value with the specified key in this map (optional operation).
` abstract void` ` https://developer.android.com/reference/java/util/Map#putAll(java.util.Map<?%20extends%20K,?%20extends%20V>)(https://developer.android.com/reference/java/util/Map<? extends K, ? extends V> m) `

Copies all of the mappings from the specified map to this map (optional operation).
` default V` ` https://developer.android.com/reference/java/util/Map#putIfAbsent(K,%20V)(K key, V value) `

If the specified key is not already associated with a value (or is mapped to `null`) associates it with the given value and returns `null`, else returns the current value (optional operation).
` default boolean` ` https://developer.android.com/reference/java/util/Map#remove(java.lang.Object,%20java.lang.Object)(https://developer.android.com/reference/java/lang/Object key, https://developer.android.com/reference/java/lang/Object value) `

Removes the entry for the specified key only if it is currently mapped to the specified value (optional operation).
` abstract V` ` https://developer.android.com/reference/java/util/Map#remove(java.lang.Object)(https://developer.android.com/reference/java/lang/Object key) `

Removes the mapping for a key from this map if it is present (optional operation).
` default boolean` ` https://developer.android.com/reference/java/util/Map#replace(K,%20V,%20V)(K key, V oldValue, V newValue) `

Replaces the entry for the specified key only if currently mapped to the specified value (optional operation).
` default V` ` https://developer.android.com/reference/java/util/Map#replace(K,%20V)(K key, V value) `

Replaces the entry for the specified key only if it is currently mapped to some value (optional operation).
` default void` ` https://developer.android.com/reference/java/util/Map#replaceAll(java.util.function.BiFunction<?%20super%20K,?%20super%20V,?%20extends%20V>)(https://developer.android.com/reference/java/util/function/BiFunction<? super K, ? super V, ? extends V> function) `

Replaces each entry's value with the result of invoking the given function on that entry until all entries have been processed or the function throws an exception (optional operation).
` abstract int` ` https://developer.android.com/reference/java/util/Map#size()() `

Returns the number of key-value mappings in this map.
` abstract https://developer.android.com/reference/java/util/Collection<V>` ` https://developer.android.com/reference/java/util/Map#values()() `

Returns a `https://developer.android.com/reference/java/util/Collection` view of the values contained in this map.

## Protected constructors

### AbstractMap

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
protected AbstractMap ()
```

Sole constructor. (For invocation by subclass constructors, typically implicit.)

<br />

## Public methods

### clear

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void clear ()
```

Removes all of the mappings from this map (optional operation). The map will be empty after this call returns.

<br />

##### Implementation Requirements:

- This implementation calls `entrySet().clear()`.

  Note that this implementation throws an `UnsupportedOperationException` if the `entrySet` does not support the `clear` operation.

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` |   |

### containsKey

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean containsKey (Object key)
```

Returns `true` if this map contains a mapping for the specified key. More formally, returns `true` if and only if this map contains a mapping for a key `k` such that `Objects.equals(key, k)`. (There can be at most one such mapping.)

<br />

##### Implementation Requirements:

- This implementation iterates over `entrySet()` searching for an entry with the specified key. If such an entry is found, `true` is returned. If the iteration terminates without finding such an entry, `false` is returned. Note that this implementation requires linear time in the size of the map; many implementations will override this method.

| Parameters ||
|---|---|
| `key` | `Object`: key whose presence in this map is to be tested <br /> |

| Returns ||
|---|---|
| `boolean` | `true` if this map contains a mapping for the specified key <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/ClassCastException` |   |
| `https://developer.android.com/reference/java/lang/NullPointerException` |   |

### containsValue

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean containsValue (Object value)
```

Returns `true` if this map maps one or more keys to the specified value. More formally, returns `true` if and only if this map contains at least one mapping to a value `v` such that `Objects.equals(value, v)`. This operation will probably require time linear in the map size for most implementations of the `Map` interface.

<br />

##### Implementation Requirements:

- This implementation iterates over `entrySet()` searching for an entry with the specified value. If such an entry is found, `true` is returned. If the iteration terminates without finding such an entry, `false` is returned. Note that this implementation requires linear time in the size of the map.

| Parameters ||
|---|---|
| `value` | `Object`: value whose presence in this map is to be tested <br /> |

| Returns ||
|---|---|
| `boolean` | `true` if this map maps one or more keys to the specified value <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/ClassCastException` |   |
| `https://developer.android.com/reference/java/lang/NullPointerException` |   |

### entrySet

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public abstract Set<Entry<K, V>> entrySet ()
```

Returns a `https://developer.android.com/reference/java/util/Set` view of the mappings contained in this map. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa. If the map is modified while an iteration over the set is in progress (except through the iterator's own `remove` operation, or through the `setValue` operation on a map entry returned by the iterator) the results of the iteration are undefined. The set supports element removal, which removes the corresponding mapping from the map, via the `Iterator.remove`, `Set.remove`, `removeAll`, `retainAll` and `clear` operations. It does not support the `add` or `addAll` operations.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Set<https://developer.android.com/reference/java/util/Map.Entry<K, V>>` | a set view of the mappings contained in this map <br /> |

### equals

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean equals (Object o)
```

Compares the specified object with this map for equality. Returns `true` if the given object is also a map and the two maps represent the same mappings. More formally, two maps `m1` and `m2` represent the same mappings if `m1.entrySet().equals(m2.entrySet())`. This ensures that the `equals` method works properly across different implementations of the `Map` interface.

<br />

##### Implementation Requirements:

- This implementation first checks if the specified object is this map; if so it returns `true`. Then, it checks if the specified object is a map whose size is identical to the size of this map; if not, it returns `false`. If so, it iterates over this map's `entrySet` collection, and checks that the specified map contains each mapping that this map contains. If the specified map fails to contain such a mapping, `false` is returned. If the iteration completes, `true` is returned.

| Parameters ||
|---|---|
| `o` | `Object`: object to be compared for equality with this map <br /> |

| Returns ||
|---|---|
| `boolean` | `true` if the specified object is equal to this map <br /> |

### get

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public V get (Object key)
```

Returns the value to which the specified key is mapped, or `null` if this map contains no mapping for the key.

More formally, if this map contains a mapping from a key `k` to a value `v` such that `Objects.equals(key, k)`, then this method returns `v`; otherwise it returns `null`. (There can be at most one such mapping.)

If this map permits null values, then a return value of `null` does not *necessarily* indicate that the map contains no mapping for the key; it's also possible that the map explicitly maps the key to `null`. The `https://developer.android.com/reference/java/util/Map#containsKey(java.lang.Object)` operation may be used to distinguish these two cases.

<br />

##### Implementation Requirements:

- This implementation iterates over `entrySet()` searching for an entry with the specified key. If such an entry is found, the entry's value is returned. If the iteration terminates without finding such an entry, `null` is returned. Note that this implementation requires linear time in the size of the map; many implementations will override this method.

| Parameters ||
|---|---|
| `key` | `Object`: the key whose associated value is to be returned <br /> |

| Returns ||
|---|---|
| `V` | the value to which the specified key is mapped, or `null` if this map contains no mapping for the key <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/ClassCastException` |   |
| `https://developer.android.com/reference/java/lang/NullPointerException` |   |

### hashCode

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int hashCode ()
```

Returns the hash code value for this map. The hash code of a map is defined to be the sum of the hash codes of each entry in the map's `entrySet()` view. This ensures that `m1.equals(m2)` implies that `m1.hashCode()==m2.hashCode()` for any two maps `m1` and `m2`, as required by the general contract of `https://developer.android.com/reference/java/lang/Object#hashCode()`.

<br />

##### Implementation Requirements:

- This implementation iterates over `entrySet()`, calling `https://developer.android.com/reference/java/util/Map.Entry#hashCode()` on each element (entry) in the set, and adding up the results.

| Returns ||
|---|---|
| `int` | the hash code value for this map <br /> |

**See also:**

- `https://developer.android.com/reference/java/util/Map.Entry#hashCode()`
- `https://developer.android.com/reference/java/lang/Object#equals(java.lang.Object)`
- `https://developer.android.com/reference/java/util/Set#equals(java.lang.Object)`

### isEmpty

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public boolean isEmpty ()
```

Returns `true` if this map contains no key-value mappings.

<br />

##### Implementation Requirements:

- This implementation returns `size() == 0`.

| Returns ||
|---|---|
| `boolean` | `true` if this map contains no key-value mappings <br /> |

### keySet

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Set<K> keySet ()
```

Returns a `https://developer.android.com/reference/java/util/Set` view of the keys contained in this map. The set is backed by the map, so changes to the map are reflected in the set, and vice-versa. If the map is modified while an iteration over the set is in progress (except through the iterator's own `remove` operation), the results of the iteration are undefined. The set supports element removal, which removes the corresponding mapping from the map, via the `Iterator.remove`, `Set.remove`, `removeAll`, `retainAll`, and `clear` operations. It does not support the `add` or `addAll` operations.

<br />

##### Implementation Requirements:

- This implementation returns a set that subclasses `https://developer.android.com/reference/java/util/AbstractSet`. The subclass's iterator method returns a "wrapper object" over this map's `entrySet()` iterator. The `size` method delegates to this map's `size` method and the `contains` method delegates to this map's `containsKey` method.

  The set is created the first time this method is called, and returned in response to all subsequent calls. No synchronization is performed, so there is a slight chance that multiple calls to this method will not all return the same set.

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Set<K>` | a set view of the keys contained in this map <br /> |

### put

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public V put (K key, 
                V value)
```

Associates the specified value with the specified key in this map (optional operation). If the map previously contained a mapping for the key, the old value is replaced by the specified value. (A map `m` is said to contain a mapping for a key `k` if and only if `https://developer.android.com/reference/java/util/Map#containsKey(java.lang.Object)` would return `true`.)

<br />

##### Implementation Requirements:

- This implementation always throws an `UnsupportedOperationException`.

| Parameters ||
|---|---|
| `key` | `K`: key with which the specified value is to be associated <br /> |
| `value` | `V`: value to be associated with the specified key <br /> |

| Returns ||
|---|---|
| `V` | the previous value associated with `key`, or `null` if there was no mapping for `key`. (A `null` return can also indicate that the map previously associated `null` with `key`, if the implementation supports `null` values.) <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/ClassCastException` |   |
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |
| `https://developer.android.com/reference/java/lang/NullPointerException` |   |
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` |   |

### putAll

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public void putAll (Map<? extends K, ? extends V> m)
```

Copies all of the mappings from the specified map to this map (optional operation). The effect of this call is equivalent to that of calling `https://developer.android.com/reference/java/util/Map#put(K,%20V)` on this map once for each mapping from key `k` to value `v` in the specified map. The behavior of this operation is undefined if the specified map is modified while the operation is in progress. If the specified map has a defined [encounter order](https://developer.android.com/reference/java/util/SequencedCollection#encounter), processing of its mappings generally occurs in that order.

<br />

##### Implementation Requirements:

- This implementation iterates over the specified map's `entrySet()` collection, and calls this map's `put` operation once for each entry returned by the iteration.

  Note that this implementation throws an `UnsupportedOperationException` if this map does not support the `put` operation and the specified map is nonempty.

| Parameters ||
|---|---|
| `m` | `Map`: mappings to be stored in this map <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/ClassCastException` |   |
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` |   |
| `https://developer.android.com/reference/java/lang/NullPointerException` |   |
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` |   |

### remove

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public V remove (Object key)
```

Removes the mapping for a key from this map if it is present (optional operation). More formally, if this map contains a mapping from key `k` to value `v` such that `Objects.equals(key, k)`, that mapping is removed. (The map can contain at most one such mapping.)

Returns the value to which this map previously associated the key, or `null` if the map contained no mapping for the key.

If this map permits null values, then a return value of `null` does not *necessarily* indicate that the map contained no mapping for the key; it's also possible that the map explicitly mapped the key to `null`.

The map will not contain a mapping for the specified key once the call returns.

<br />

##### Implementation Requirements:

- This implementation iterates over `entrySet()` searching for an entry with the specified key. If such an entry is found, its value is obtained with its `getValue` operation, the entry is removed from the collection (and the backing map) with the iterator's `remove` operation, and the saved value is returned. If the iteration terminates without finding such an entry, `null` is returned. Note that this implementation requires linear time in the size of the map; many implementations will override this method.

  Note that this implementation throws an `UnsupportedOperationException` if the `entrySet` iterator does not support the `remove` method and this map contains a mapping for the specified key.

| Parameters ||
|---|---|
| `key` | `Object`: key whose mapping is to be removed from the map <br /> |

| Returns ||
|---|---|
| `V` | the previous value associated with `key`, or `null` if there was no mapping for `key`. <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/ClassCastException` |   |
| `https://developer.android.com/reference/java/lang/NullPointerException` |   |
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` |   |

### size

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public int size ()
```

Returns the number of key-value mappings in this map. If the map contains more than `Integer.MAX_VALUE` elements, returns `Integer.MAX_VALUE`.

<br />

##### Implementation Requirements:

- This implementation returns `entrySet().size()`.

| Returns ||
|---|---|
| `int` | the number of key-value mappings in this map <br /> |

### toString

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public String toString ()
```

Returns a string representation of this map. The string representation consists of a list of key-value mappings in the order returned by the map's `entrySet` view's iterator, enclosed in braces (`"{}"`). Adjacent mappings are separated by the characters `", "` (comma and space). Each key-value mapping is rendered as the key followed by an equals sign (`"="`) followed by the associated value. Keys and values are converted to strings as by `https://developer.android.com/reference/java/lang/String#valueOf(java.lang.Object)`.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/String` | a string representation of this map <br /> |

### values

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
public Collection<V> values ()
```

Returns a `https://developer.android.com/reference/java/util/Collection` view of the values contained in this map. The collection is backed by the map, so changes to the map are reflected in the collection, and vice-versa. If the map is modified while an iteration over the collection is in progress (except through the iterator's own `remove` operation), the results of the iteration are undefined. The collection supports element removal, which removes the corresponding mapping from the map, via the `Iterator.remove`, `Collection.remove`, `removeAll`, `retainAll` and `clear` operations. It does not support the `add` or `addAll` operations.

<br />

##### Implementation Requirements:

- This implementation returns a collection that subclasses `https://developer.android.com/reference/java/util/AbstractCollection`. The subclass's iterator method returns a "wrapper object" over this map's `entrySet()` iterator. The `size` method delegates to this map's `size` method and the `contains` method delegates to this map's `containsValue` method.

  The collection is created the first time this method is called, and returned in response to all subsequent calls. No synchronization is performed, so there is a slight chance that multiple calls to this method will not all return the same collection.

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Collection<V>` | a collection view of the values contained in this map <br /> |

## Protected methods

### clone

Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels)

```
protected Object clone ()
```

Returns a shallow copy of this `AbstractMap` instance: the keys and values themselves are not cloned.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/lang/Object` | a shallow copy of this map <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/CloneNotSupportedException` |   |