In Java, the SortedMap
interface is part of the Java Collections Framework and extends the Map
interface. It represents a map that maintains its entries in a sorted order based on the keys. Unlike the standard Map
interface, which does not guarantee any specific order of keys, a SortedMap
ensures that the keys are sorted according to their natural order or a custom comparator provided during map creation. This makes SortedMap
useful when you need to work with key-value pairs in a specific order. Here's an overview of the SortedMap
interface and some common implementations:
1. SortedMap Interface (java.util.SortedMap):
The SortedMap
interface defines methods for managing key-value pairs while maintaining a sorted order of keys:
comparator()
: Returns the comparator used to order the keys, ornull
if the natural ordering of keys is used.subMap(K fromKey, K toKey)
: Returns a view of the portion of the map whose keys range fromfromKey
(inclusive) totoKey
(exclusive).headMap(K toKey)
: Returns a view of the portion of the map whose keys are less thantoKey
.tailMap(K fromKey)
: Returns a view of the portion of the map whose keys are greater than or equal tofromKey
.firstKey()
: Returns the first (lowest) key in the map.lastKey()
: Returns the last (highest) key in the map.
Common SortedMap Implementations:
Java provides several implementations of the SortedMap
interface to suit different use cases. Some common ones include:
1. TreeMap (java.util.TreeMap):
Implemented as a Red-Black tree, which ensures that key-value pairs are sorted according to their keys.
Allows the use of a custom comparator for sorting.
Supports efficient retrieval of key-value pairs in sorted order.
Suitable when you need a map with keys in sorted order.
Example of Using TreeMap as a SortedMap:
Here's an example of using TreeMap
as a SortedMap
:
import java.util.SortedMap;
import java.util.TreeMap;
public class TreeMapExample {
public static void main(String[] args) {
// Create a TreeMap of names and ages
SortedMap<String, Integer> ages = new TreeMap<>();
// Add key-value pairs
ages.put("Alice", 25);
ages.put("Bob", 30);
ages.put("Charlie", 22);
// Retrieve values by key
int aliceAge = ages.get("Alice"); // 25
// Check if a key exists
boolean hasKey = ages.containsKey("David"); // false
// Iterate through the key-value pairs in sorted order
for (String name : ages.keySet()) {
int age = ages.get(name);
System.out.println("Name: " + name + ", Age: " + age);
}
}
}
In the example above, the TreeMap
maintains the key-value pairs in sorted order based on the keys. This allows you to retrieve entries in sorted order, which can be useful for various applications, such as maintaining a sorted dictionary or addressing cases where keys need to be processed in a specific order.