Added in [API level 1](https://developer.android.com/guide/topics/manifest/uses-sdk-element#ApiLevels) Summary: [Methods](https://developer.android.com/reference/java/util/Map.Entry#pubmethods)

# Map.Entry

` public static interface Map.Entry `   
` `

|---|
| java.util.Map.Entry\<K, V\> |

Known indirect subclasses [AbstractMap.SimpleEntry](https://developer.android.com/reference/java/util/AbstractMap.SimpleEntry)\<K, V\>, [AbstractMap.SimpleImmutableEntry](https://developer.android.com/reference/java/util/AbstractMap.SimpleImmutableEntry)\<K, V\> [AbstractMap.SimpleEntry](https://developer.android.com/reference/java/util/AbstractMap.SimpleEntry)\<K, V\> An Entry maintaining a key and a value. [AbstractMap.SimpleImmutableEntry](https://developer.android.com/reference/java/util/AbstractMap.SimpleImmutableEntry)\<K, V\> An unmodifiable Entry maintaining a key and a value.   

*** ** * ** ***

A map entry (key-value pair). The Entry may be unmodifiable, or the value may be modifiable if the optional `setValue` method is implemented. The Entry may be independent of any map, or it may represent an entry of the entry-set view of a map.

An Entry maintains a connection to its underlying map if the Entry was obtained by iterating the `https://developer.android.com/reference/java/util/Map#entrySet()` view of a map, either explicitly by using an `https://developer.android.com/reference/java/util/Iterator` or implicitly via the enhanced `for` statement. This connection to the backing map is valid *only* during iteration of the entry-set view. During the iteration, if supported by the backing map, a change to an Entry's value via the `https://developer.android.com/reference/java/util/Map.Entry#setValue(V)` method will be visible in the backing map. The behavior of such an Entry is undefined outside of iteration of the map's entry-set view. It is also undefined if the backing map has been modified after the Entry was returned by the iterator, except through the `setValue` method. In addition, a change to the value of a mapping in the backing map might or might not be visible in the corresponding Entry of the entry-set view.

An Entry may also be obtained from a map's entry-set view by other means, for example, using the `https://developer.android.com/reference/java/util/Collection#parallelStream()`, `https://developer.android.com/reference/java/util/Collection#stream()`, `https://developer.android.com/reference/java/util/Set#spliterator()` methods, any of the `https://developer.android.com/reference/java/util/Set#toArray()` overloads, or by copying the entry-set view into another collection. It is unspecified whether the obtained Entry instances are connected to the underlying map, whether changes to such an Entry will affect the underlying the map and vice-versa, and whether such an Entry supports the optional `https://developer.android.com/reference/java/util/Map.Entry#setValue(V)` method.

In addition, an Entry may be obtained directly from a map, for example via calls to methods directly on the `https://developer.android.com/reference/java/util/NavigableMap` interface. An entry thus obtained is generally not connected to the map and is an unmodifiable snapshot of the mapping as of the time of the call. Such an Entry also does not generally support the `setValue` method.

An Entry obtained by direct construction of the `https://developer.android.com/reference/java/util/AbstractMap.SimpleEntry` or `https://developer.android.com/reference/java/util/AbstractMap.SimpleImmutableEntry` classes or from a call to the `https://developer.android.com/reference/java/util/Map#entry(K,%20V)` or `https://developer.android.com/reference/java/util/Map.Entry#copyOf(java.util.Map.Entry<?%20extends%20K,?%20extends%20V>)` methods is not connected to any map.
**See also:**

- `https://developer.android.com/reference/java/util/Map#entrySet()`

## Summary

| ### Public methods ||
|---|---|
| ` static <K, V> https://developer.android.com/reference/java/util/Comparator<https://developer.android.com/reference/java/util/Map.Entry<K, V>>` | ` https://developer.android.com/reference/java/util/Map.Entry#comparingByKey(java.util.Comparator<?%20super%20K>)(https://developer.android.com/reference/java/util/Comparator<? super K> cmp) ` Returns a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` by key using the given `https://developer.android.com/reference/java/util/Comparator`. |
| ` static <K extends https://developer.android.com/reference/java/lang/Comparable<? super K>, V> https://developer.android.com/reference/java/util/Comparator<https://developer.android.com/reference/java/util/Map.Entry<K, V>>` | ` https://developer.android.com/reference/java/util/Map.Entry#comparingByKey()() ` Returns a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` in natural order on key. |
| ` static <K, V> https://developer.android.com/reference/java/util/Comparator<https://developer.android.com/reference/java/util/Map.Entry<K, V>>` | ` https://developer.android.com/reference/java/util/Map.Entry#comparingByValue(java.util.Comparator<?%20super%20V>)(https://developer.android.com/reference/java/util/Comparator<? super V> cmp) ` Returns a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` by value using the given `https://developer.android.com/reference/java/util/Comparator`. |
| ` static <K, V extends https://developer.android.com/reference/java/lang/Comparable<? super V>> https://developer.android.com/reference/java/util/Comparator<https://developer.android.com/reference/java/util/Map.Entry<K, V>>` | ` https://developer.android.com/reference/java/util/Map.Entry#comparingByValue()() ` Returns a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` in natural order on value. |
| ` static <K, V> https://developer.android.com/reference/java/util/Map.Entry<K, V>` | ` https://developer.android.com/reference/java/util/Map.Entry#copyOf(java.util.Map.Entry<?%20extends%20K,?%20extends%20V>)(https://developer.android.com/reference/java/util/Map.Entry<? extends K, ? extends V> e) ` Returns a copy of the given `Map.Entry`. |
| ` abstract boolean` | ` https://developer.android.com/reference/java/util/Map.Entry#equals(java.lang.Object)(https://developer.android.com/reference/java/lang/Object o) ` Compares the specified object with this entry for equality. |
| ` abstract K` | ` https://developer.android.com/reference/java/util/Map.Entry#getKey()() ` Returns the key corresponding to this entry. |
| ` abstract V` | ` https://developer.android.com/reference/java/util/Map.Entry#getValue()() ` Returns the value corresponding to this entry. |
| ` abstract int` | ` https://developer.android.com/reference/java/util/Map.Entry#hashCode()() ` Returns the hash code value for this map entry. |
| ` abstract V` | ` https://developer.android.com/reference/java/util/Map.Entry#setValue(V)(V value) ` Replaces the value corresponding to this entry with the specified value (optional operation). |

## Public methods

### comparingByKey

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

```
public static Comparator<Entry<K, V>> comparingByKey (Comparator<? super K> cmp)
```

Returns a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` by key using the given `https://developer.android.com/reference/java/util/Comparator`.

The returned comparator is serializable if the specified comparator is also serializable.

<br />

| Parameters ||
|---|---|
| `cmp` | `Comparator`: the key `https://developer.android.com/reference/java/util/Comparator` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Comparator<https://developer.android.com/reference/java/util/Map.Entry<K, V>>` | a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` by the key. <br /> |

### comparingByKey

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

```
public static Comparator<Entry<K, V>> comparingByKey ()
```

Returns a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` in natural order on key.

The returned comparator is serializable and throws `https://developer.android.com/reference/java/lang/NullPointerException` when comparing an entry with a null key.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Comparator<https://developer.android.com/reference/java/util/Map.Entry<K, V>>` | a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` in natural order on key. <br /> |

**See also:**

- `https://developer.android.com/reference/java/lang/Comparable`

### comparingByValue

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

```
public static Comparator<Entry<K, V>> comparingByValue (Comparator<? super V> cmp)
```

Returns a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` by value using the given `https://developer.android.com/reference/java/util/Comparator`.

The returned comparator is serializable if the specified comparator is also serializable.

<br />

| Parameters ||
|---|---|
| `cmp` | `Comparator`: the value `https://developer.android.com/reference/java/util/Comparator` <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Comparator<https://developer.android.com/reference/java/util/Map.Entry<K, V>>` | a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` by the value. <br /> |

### comparingByValue

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

```
public static Comparator<Entry<K, V>> comparingByValue ()
```

Returns a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` in natural order on value.

The returned comparator is serializable and throws `https://developer.android.com/reference/java/lang/NullPointerException` when comparing an entry with null values.

<br />

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Comparator<https://developer.android.com/reference/java/util/Map.Entry<K, V>>` | a comparator that compares `https://developer.android.com/reference/java/util/Map.Entry` in natural order on value. <br /> |

**See also:**

- `https://developer.android.com/reference/java/lang/Comparable`

### copyOf

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

```
public static Entry<K, V> copyOf (Entry<? extends K, ? extends V> e)
```

Returns a copy of the given `Map.Entry`. The returned instance is not associated with any map. The returned instance has the same characteristics as instances returned by the `https://developer.android.com/reference/java/util/Map#entry(K,%20V)` method.

<br />

##### API Note:

- An instance obtained from a map's entry-set view has a connection to that map. The `copyOf` method may be used to create a `Map.Entry` instance, containing the same key and value, that is independent of any map.

##### Implementation Note:

- If the given entry was obtained from a call to `copyOf` or `Map::entry`, calling `copyOf` will generally not create another copy.

| Parameters ||
|---|---|
| `e` | `Entry`: the entry to be copied <br /> |

| Returns ||
|---|---|
| `https://developer.android.com/reference/java/util/Map.Entry<K, V>` | a map entry equal to the given entry <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/NullPointerException` | if e is null or if either of its key or value is null |

### equals

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

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

Compares the specified object with this entry for equality. Returns `true` if the given object is also a map entry and the two entries represent the same mapping. More formally, two entries `e1` and `e2` represent the same mapping if

```
    (e1.getKey()==null ?
     e2.getKey()==null : e1.getKey().equals(e2.getKey()))  &&
    (e1.getValue()==null ?
     e2.getValue()==null : e1.getValue().equals(e2.getValue()))
```
This ensures that the `equals` method works properly across different implementations of the `Map.Entry` interface.

<br />

<br />

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

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

### getKey

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

```
public abstract K getKey ()
```

Returns the key corresponding to this entry.

<br />

| Returns ||
|---|---|
| `K` | the key corresponding to this entry <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | implementations may, but are not required to, throw this exception if the entry has been removed from the backing map. |

### getValue

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

```
public abstract V getValue ()
```

Returns the value corresponding to this entry. If the mapping has been removed from the backing map (by the iterator's `remove` operation), the results of this call are undefined.

<br />

| Returns ||
|---|---|
| `V` | the value corresponding to this entry <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/IllegalStateException` | implementations may, but are not required to, throw this exception if the entry has been removed from the backing map. |

### hashCode

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

```
public abstract int hashCode ()
```

Returns the hash code value for this map entry. The hash code of a map entry `e` is defined to be:

```
    (e.getKey()==null   ? 0 : e.getKey().hashCode()) ^
    (e.getValue()==null ? 0 : e.getValue().hashCode())
```
This ensures that `e1.equals(e2)` implies that `e1.hashCode()==e2.hashCode()` for any two Entries `e1` and `e2`, as required by the general contract of `Object.hashCode`.

<br />

<br />

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

**See also:**

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

### setValue

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

```
public abstract V setValue (V value)
```

Replaces the value corresponding to this entry with the specified value (optional operation). (Writes through to the map.) The behavior of this call is undefined if the mapping has already been removed from the map (by the iterator's `remove` operation).

<br />

| Parameters ||
|---|---|
| `value` | `V`: new value to be stored in this entry <br /> |

| Returns ||
|---|---|
| `V` | old value corresponding to the entry <br /> |

| Throws ||
|---|---|
| `https://developer.android.com/reference/java/lang/ClassCastException` | if the class of the specified value prevents it from being stored in the backing map |
| `https://developer.android.com/reference/java/lang/IllegalArgumentException` | if some property of this value prevents it from being stored in the backing map |
| `https://developer.android.com/reference/java/lang/IllegalStateException` | implementations may, but are not required to, throw this exception if the entry has been removed from the backing map. |
| `https://developer.android.com/reference/java/lang/NullPointerException` | if the backing map does not permit null values, and the specified value is null |
| `https://developer.android.com/reference/java/lang/UnsupportedOperationException` | if the `put` operation is not supported by the backing map |