Интерфейс SortedMap
Интерфейс SortedMap в Java расширяет Map. Он гарантирует, что записи сохраняются в порядке возрастания ключа.
Несколько методов вызывают исключение NoSuchElementException, если на вызывающей карте нет элементов. ClassCastException вызывается, когда объект несовместим с элементами на карте. Исключение NullPointerException вызывается, если совершается попытка использовать нулевой объект, когда null не разрешен на карте.
Методы, объявленные SortedMap, написаны в следующей таблице:
Методы
№ Методы и описание
1 Comparator comparator( )
Возвращается компаратор вызывающей отсортированной Map. Если для вызванного Map используется естественный порядок, возвращается null.
2 Object firstKey( )
Возвращает первый ключ в вызываемом Map.
3 SortedMap headMap(Object end)
Возвращает отсортированный Map для этих записей Map с ключами, которые меньше, чем end.
4 Object lastKey( )
Возвращает последний ключ в вызываемом Map.
5 SortedMap subMap(Object start, Object end)
Возвращает Map, содержащий эти записи с ключами, которые больше или равны start и меньше, чем end.
6 SortedMap tailMap(Object start)
Возвращает Map, содержащий эти записи с ключами, которые больше или равны start.
Пример
SortedMap имеет свою реализацию в различных классах, например TreeMap. Ниже приведен пример объяснения функциональности SortedMap:
import java.util.*;
public class TreeMapDemo {
public static void main(String args[]) {
// Создаём хэш-карту
TreeMap tm = new TreeMap();
// Кладём элементы в Map
hm.put("Зоя", new Double(3434.34));
hm.put("Марк", new Double(123.22));
hm.put("Аня", new Double(1378.00));
hm.put("Маргарита", new Double(99.22));
hm.put("Михаил", new Double(-19.08));
// Получаем набор элементов
Set set = tm.entrySet();
// Получаем итератор
Iterator i = set.iterator();
// Отображение элементов
while(i.hasNext()) {
Map.Entry me = (Map.Entry)i.next();
System.out.print(me.getKey() + ": ");
System.out.println(me.getValue());
}
System.out.println();
// Вносим 1000 на счёт Зои
double balance = ((Double)hm.get("Зоя")).doubleValue();
hm.put("Зоя", new Double(balance + 1000));
System.out.println("Новый баланс Зои: " + hm.get("Зоя"));
}
}
Получим следующий результат:
Аня: 1378.0
Маргарита: 99.22
Марк: 123.22
Михаил: -19.08
Зоя: 3434.34
Новый баланс Зои: 4434.34