Map Interface in java
The java collection framework has an interface Map that is available inside the java.util package. The Map interface is not a subtype of Collection interface.
🔔 The Map stores the elements as a pair of key and value.
🔔 The Map does not allows duplicate keys, but allows duplicate values.
🔔 In a Map, each key can map to at most one value only.
🔔 In a Map, the order of elements depends on specific implementations, e.g TreeMap and LinkedHashMap have predictable order, while HashMap does not.
The Map interface has the following child interfaces.
| Interface | Description | 
|---|---|
| Map | Maps unique key to value. | 
| Map.Entry | Describe an element in key and value pair in a map. Entry is sub interface of Map. | 
| SortedMap | It is a child of Map so that key are maintained in an ascending order. | 
| NavigableMap | It is a child of SortedMap to handle the retrienal of entries based on closest match searches. | 
The Map interface has the following three classes.
| Class | Description | 
|---|---|
| HashMap | It implements the Map interface, but it doesn't maintain any order. | 
| LinkedHashMap | It implements the Map interface, it also extends HashMap class. It maintains the insertion order. | 
| TreeMap | It implements the Map and SortedMap interfaces. It maintains the ascending order. | 
Map Interface methods
The Map interface contains methods for handling elements of a map. It has the following methods.
The insertion of a key, value pair is said to be an entry in the map terminology.
| Method | Description | 
|---|---|
| V put(Object key, Object value) | Inserts an entry in the map. | 
| void putAll(Map map) | Inserts the specified map into the invoking map. | 
| V putIfAbsent(K key, V value) | Inserts the specified value with the specified key in the map only if that key does not exist. | 
| Set keySet( ) | Returns a Set that contains all the keys of invoking Map. | 
| Collection values( ) | Returns a collection that contains all the values of invoking Map. | 
| Set<Map.Entry<K,V>> entrySet() | Returns a Set that contains all the keys and values of invoking Map. | 
| V get(Object key) | Returns the value associated with the specified key. | 
| V getOrDefault(Object key, V defaultValue) | Returns the value associated with the specified key, or defaultValue if the map does not contain the key. | 
| boolean containsValue(Object value) | Returns true if specified value found in the map, else return false. | 
| boolean containsKey(Object key) | Returns true if specified key found in the map, else return false. | 
| V replace(K key, V value) | Used to replace the specified value for the specified key. | 
| boolean replace(K key, V oldValue, V newValue) | Used to replaces the oldValue with the newValue for a specified key. | 
| void replaceAll(BiFunction 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. | 
| V merge(K key, V value, BiFunction 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. | 
| V compute(K key, BiFunction remappingFunction) | Used to compute a mapping for the specified key and its current mapped value. | 
| V computeIfAbsent(K key, Function mappingFunction) | Used to compute its value using the given mapping function, if the specified key is not already associated with a value, and enters it into this map unless null. | 
| V computeIfPresent(K key, BiFunction remappingFunction) | Used to compute a new mapping given the key and its current mapped value if the value for the specified key is present and non-null. | 
| void forEach(BiConsumer action) | It performs the given action for each entry in the map until all entries have been processed or the action throws an exception. | 
| V remove(Object key) | Removes an entry for the specified key. | 
| boolean remove(Object key, Object value) | Removes the specified values with the associated specified keys from the map. | 
| void clear() | Removes all the entries from the map. | 
| boolean equals(Object o) | It is used to compare the specified Object with the Map. | 
| int hashCode() | Returns the hash code for invoking the Map. | 
| boolean isEmpty() | Returns true if the map is empty; otherwise returns false. | 
| int size() | Returns total number of entries in the invoking Map. | 
In the upcoming tutorials, we will discuss in detail how the above methods used to handle the elements of collections like HashMap, LinkedHashMap, and TreeMap.
