In Java, a HashMap is a part of the java.util package and implements the Map interface. It stores data in key-value pairs, where each key is unique and maps to exactly one value.
🧠 Key Features of HashMap:
- Fast access: Uses a technique called hashing to retrieve values quickly based on their keys.
- No duplicate keys: If you try to insert a key that already exists, the new value will overwrite the old one.
- Allows one
nullkey and multiplenullvalues. - Not ordered: The order of elements is not guaranteed (use
LinkedHashMapif you need insertion order). - Not thread-safe: For concurrent access, use
ConcurrentHashMap.
🧪 Example:
import java.util.HashMap;
public class Example {
public static void main(String[] args) {
HashMap scores = new HashMap<>();
scores.put(“Alice”, 90);
scores.put(“Bob”, 85);
scores.put(“Charlie”, 92);
System.out.println(scores.get("Alice")); // Output: 90
}
}Java’s HashMap class offers a rich set of methods to manage key-value pairs efficiently. Here’s a handy breakdown of the most commonly used ones:
🔑 Basic Operations
put(K key, V value)– Adds or updates a key-value pair.get(Object key)– Retrieves the value for a given key.remove(Object key)– Deletes the entry for the specified key.clear()– Removes all entries from the map.size()– Returns the number of key-value pairs.isEmpty()– Checks if the map is empty.
🔍 Search & Check
containsKey(Object key)– Checks if a key exists.containsValue(Object value)– Checks if a value exists.getOrDefault(Object key, V defaultValue)– Returns the value or a default if the key isn’t found.
🛠️ Advanced Utilities
putIfAbsent(K key, V value)– Adds a key-value pair only if the key isn’t already present.replace(K key, V value)– Replaces the value for a key if it exists.replace(K key, V oldValue, V newValue)– Replaces only if the current value matches the old one.merge(K key, V value, BiFunction)– Combines values for duplicate keys using a function.compute(K key, BiFunction)– Recomputes the value for a key.computeIfAbsent(K key, Function)– Computes and adds a value if the key is missing.computeIfPresent(K key, BiFunction)– Updates the value only if the key exists.
🔄 Iteration & Views
keySet()– Returns aSetof all keys.values()– Returns aCollectionof all values.entrySet()– Returns aSetof all key-value pairs.forEach(BiConsumer)– Performs an action for each entry.