Интерфейс SortedMap<K, V>
- Параметры типа:
K- тип ключей, хранящихся в этой картеV- тип отображаемых значений
- Все суперинтерфейсы:
Map<K,V>, SequencedMap<K, V>
- Все известные подинтерфейсы:
ConcurrentNavigableMap<K,V>, NavigableMap<K, V>
- Все известные реализующие классы:
ConcurrentSkipListMap, TreeMap
public interface SortedMap<K,V> extends SequencedMap<K,V>
Map, который дополнительно задаёт полный порядок для своих ключей. Порядок карты определяется естественным порядком её ключей или Comparator, обычно указываемым при создании отсортированной карты. Этот порядок сохраняется при переборе представлений коллекций отсортированной карты (возвращаемых методами entrySet, keySet и values). Для использования этого порядка предоставляется несколько дополнительных операций. (Этот интерфейс является аналогом карты для SortedSet.) Все ключи, добавляемые в отсортированную карту, должны реализовывать интерфейс Comparable (или быть допустимыми согласно указанному компаратору). Кроме того, все такие ключи должны быть взаимно сравнимы: k1.compareTo(k2) (или comparator.compare(k1, k2)) не должен выбрасывать ClassCastException для любых ключей k1 и k2 в отсортированной карте. Попытки нарушить это ограничение приведут к тому, что соответствующий метод или вызов конструктора выбросит ClassCastException.
Обратите внимание: порядок, поддерживаемый отсортированной картой (независимо от того, задан ли явный компаратор), должен быть согласован с equals, чтобы отсортированная карта корректно реализовывала интерфейс Map. (Точное определение понятия согласован с equals см. в интерфейсе Comparable или Comparator.) Это связано с тем, что интерфейс Map определён через операцию equals, однако отсортированная карта сравнивает все ключи с помощью метода compareTo (или compare), поэтому два ключа, признанные равными этим методом, считаются равными и с точки зрения отсортированной карты. Поведение дерева карты определено, даже если её порядок не согласован с equals; просто оно не соответствует общему контракту интерфейса Map.
Все универсальные реализации отсортированных карт должны предоставлять четыре «стандартных» конструктора. Однако обеспечить это требование невозможно, поскольку интерфейсы не могут задавать обязательные конструкторы. Ожидаемые «стандартные» конструкторы для всех реализаций отсортированных карт:
- Конструктор без аргументов, который создаёт пустую отсортированную карту, упорядоченную по естественному порядку её ключей.
- Конструктор с одним аргументом типа
Comparator, который создаёт пустую отсортированную карту, упорядоченную согласно указанному компаратору. - Конструктор с одним аргументом типа
Map, который создаёт новую карту с теми же отображениями ключ-значение, что и аргумент, упорядоченными по естественному порядку ключей. - Конструктор с одним аргументом типа
SortedMap, который создаёт новую отсортированную карту с теми же отображениями ключ-значение и тем же порядком, что и входная отсортированная карта.
Примечание: несколько методов возвращают подкарты с ограниченными диапазонами ключей. Такие диапазоны являются полуоткрытыми: они включают нижнюю границу, но не включают верхнюю (если применимо). Если нужен замкнутый диапазон (включающий обе границы) и тип ключа позволяет вычислить следующий ключ для заданного ключа, просто запросите поддиапазон от lowEndpoint до successor(highEndpoint). Например, предположим, что m — это карта со строковыми ключами. Следующий идиоматический код получает представление, содержащее все отображения ключ-значение в m, ключи которых находятся между low и high включительно:
SortedMap<String, V> sub = m.subMap(low, high+"\0");Аналогичный приём можно использовать для получения открытого диапазона (не включающего ни одну из границ). Следующий идиоматический код получает представление, содержащее все отображения ключ-значение в
m, ключи которых находятся между low и high исключительно:SortedMap<String, V> sub = m.subMap(low+"\0", high);
Этот интерфейс входит в состав Java Collections Framework.
- Начиная с версии:
- 1.2
- См. также:
Краткое описание вложенных классов
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
Comparator |
comparator() |
Возвращает компаратор, используемый для упорядочивания ключей этой карты, или null, если в этой карте используется естественный порядок ключей. |
Set |
entrySet() |
Возвращает представление в виде Set отображений, содержащихся в этой карте. |
K |
firstKey() |
Возвращает первый (наименьший) ключ, находящийся в этой карте. |
SortedMap |
headMap |
Возвращает представление той части этой карты, ключи которой строго меньше toKey. |
Set |
keySet() |
Возвращает представление в виде Set ключей, содержащихся в этой карте. |
K |
lastKey() |
Возвращает последний (наибольший) ключ, находящийся в этой карте. |
default V |
putFirst |
Выбрасывает UnsupportedOperationException. |
default V |
putLast |
Выбрасывает UnsupportedOperationException. |
default SortedMap |
reversed() |
Возвращает представление этой карты в обратном порядке. |
SortedMap |
subMap |
Возвращает представление той части этой карты, ключи которой находятся в диапазоне от fromKey включительно до toKey исключительно. |
SortedMap |
tailMap |
Возвращает представление той части этой карты, ключи которой больше или равны fromKey. |
Collection |
values() |
Возвращает представление в виде Collection значений, содержащихся в этой карте. |
Методы, объявленные в интерфейсе Map
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, equals, forEach, get, getOrDefault, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size
Методы, объявленные в интерфейсе SequencedMap
firstEntry, lastEntry, pollFirstEntry, pollLastEntry, sequencedEntrySet, sequencedKeySet, sequencedValues
Подробное описание методов
comparator
Comparator<? super K> comparator()
null, если в этой карте используется естественный порядок ключей.- Возвращает:
- компаратор, используемый для упорядочивания ключей этой карты, или
null, если в этой карте используется естественный порядок ключей
subMap
SortedMap<K,V> subMap(K fromKey, K toKey)
fromKey включительно до toKey исключительно. (Если fromKey и toKey равны, возвращаемая карта пуста.) Возвращаемая карта связана с этой картой, поэтому изменения в возвращаемой карте отражаются в этой карте, и наоборот. Возвращаемая карта поддерживает все необязательные операции с картами, поддерживаемые этой картой. При попытке вставить ключ за пределами диапазона возвращаемая карта выбросит IllegalArgumentException.
- Параметры:
-
fromKey- нижняя граница (включительно) ключей в возвращаемой карте -
toKey- верхняя граница (исключительно) ключей в возвращаемой карте - Возвращает:
- представление той части этой карты, ключи которой находятся в диапазоне от
fromKeyвключительно доtoKeyисключительно - Выбрасывает:
-
ClassCastException- еслиfromKeyиtoKeyнельзя сравнить друг с другом с помощью компаратора этой карты (или, если у карты нет компаратора, с помощью естественного порядка). Реализации могут выбрасывать это исключение, еслиfromKeyилиtoKeyнельзя сравнить с ключами, находящимися в карте, но не обязаны этого делать. -
NullPointerException- еслиfromKeyилиtoKeyравно null, а эта карта не допускает null в качестве ключей -
IllegalArgumentException- еслиfromKeyбольшеtoKey; или если сама эта карта имеет ограниченный диапазон, аfromKeyилиtoKeyнаходится за его пределами
headMap
SortedMap<K,V> headMap(K toKey)
toKey. Возвращаемая карта связана с этой картой, поэтому изменения в возвращаемой карте отражаются в этой карте, и наоборот. Возвращаемая карта поддерживает все необязательные операции с картами, поддерживаемые этой картой. При попытке вставить ключ за пределами диапазона возвращаемая карта выбросит IllegalArgumentException.
- Параметры:
-
toKey- верхняя граница (исключительно) ключей в возвращаемой карте - Возвращает:
- представление той части этой карты, ключи которой строго меньше
toKey - Выбрасывает:
-
ClassCastException- еслиtoKeyнесовместим с компаратором этой карты (или, если у карты нет компаратора, еслиtoKeyне реализуетComparable). Реализации могут выбрасывать это исключение, еслиtoKeyнельзя сравнить с ключами, находящимися в карте, но не обязаны этого делать. -
NullPointerException- еслиtoKeyравно null, а эта карта не допускает null в качестве ключей -
IllegalArgumentException- если сама эта карта имеет ограниченный диапазон, аtoKeyнаходится за его пределами
tailMap
SortedMap<K,V> tailMap(K fromKey)
fromKey. Возвращаемая карта связана с этой картой, поэтому изменения в возвращаемой карте отражаются в этой карте, и наоборот. Возвращаемая карта поддерживает все необязательные операции с картами, поддерживаемые этой картой. При попытке вставить ключ за пределами диапазона возвращаемая карта выбросит IllegalArgumentException.
- Параметры:
-
fromKey- нижняя граница (включительно) ключей в возвращаемой карте - Возвращает:
- представление той части этой карты, ключи которой больше или равны
fromKey - Выбрасывает:
-
ClassCastException- еслиfromKeyнесовместим с компаратором этой карты (или, если у карты нет компаратора, еслиfromKeyне реализуетComparable). Реализации могут выбрасывать это исключение, еслиfromKeyнельзя сравнить с ключами, находящимися в карте, но не обязаны этого делать. -
NullPointerException- еслиfromKeyравно null, а эта карта не допускает null в качестве ключей -
IllegalArgumentException- если сама эта карта имеет ограниченный диапазон, аfromKeyнаходится за его пределами
firstKey
K firstKey()
- Возвращает:
- первый (наименьший) ключ, находящийся в этой карте
- Выбрасывает:
-
NoSuchElementException- если эта карта пуста
lastKey
K lastKey()
- Возвращает:
- последний (наибольший) ключ, находящийся в этой карте
- Выбрасывает:
-
NoSuchElementException- если эта карта пуста
keySet
Set<K> keySet()
Set ключей, содержащихся в этой карте. Итератор множества возвращает ключи в порядке возрастания. Множество связано с картой, поэтому изменения в карте отражаются в множестве, и наоборот. Если карта изменена во время итерации по множеству (за исключением изменений посредством собственной операции remove итератора), результаты итерации не определены. Множество поддерживает удаление элементов, которое удаляет соответствующее отображение из карты посредством операций Iterator.remove, Set.remove, removeAll, retainAll и clear. Операции add и addAll не поддерживаются.values
Collection<V> values()
Collection значений, содержащихся в этой карте. Итератор коллекции возвращает значения в порядке возрастания соответствующих ключей. Коллекция связана с картой, поэтому изменения в карте отражаются в коллекции, и наоборот. Если карта изменена во время итерации по коллекции (за исключением изменений посредством собственной операции remove итератора), результаты итерации не определены. Коллекция поддерживает удаление элементов, которое удаляет соответствующее отображение из карты посредством операций Iterator.remove, Collection.remove, removeAll, retainAll и clear. Операции add и addAll не поддерживаются.entrySet
Set<Map.Entry<K,V>> entrySet()
Set отображений, содержащихся в этой карте. Итератор множества возвращает записи в порядке возрастания ключей. Множество связано с картой, поэтому изменения в карте отражаются в множестве, и наоборот. Если карта изменена во время итерации по множеству (за исключением изменений посредством собственной операции remove итератора или операции setValue над записью карты, возвращённой итератором), результаты итерации не определены. Множество поддерживает удаление элементов, которое удаляет соответствующее отображение из карты посредством операций Iterator.remove, Set.remove, removeAll, retainAll и clear. Операции add и addAll не поддерживаются.putFirst
default V putFirst(K k, V v)
UnsupportedOperationException. Порядок следования, определяемый методом сравнения этой карты, задаёт расположение отображений, поэтому явное указание позиции не поддерживается.- Определено в:
-
putFirstв интерфейсеSequencedMap<K,V> - Требования к реализации:
- Реализация в этом интерфейсе всегда выбрасывает
UnsupportedOperationException. - Параметры:
-
k- ключ -
v- значение - Возвращает:
- значение, ранее связанное с k, или null, если такого значения нет
- Выбрасывает:
-
UnsupportedOperationException- всегда - Начиная с версии:
- 21
putLast
default V putLast(K k, V v)
UnsupportedOperationException. Порядок следования, определяемый методом сравнения этой карты, задаёт расположение отображений, поэтому явное указание позиции не поддерживается.- Определено в:
-
putLastв интерфейсеSequencedMap<K,V> - Требования к реализации:
- Реализация в этом интерфейсе всегда выбрасывает
UnsupportedOperationException. - Параметры:
-
k- ключ -
v- значение - Возвращает:
- значение, ранее связанное с k, или null, если такого значения нет
- Выбрасывает:
-
UnsupportedOperationException- всегда - Начиная с версии:
- 21
reversed
default SortedMap<K,V> reversed()
- Определено в:
-
reversedв интерфейсеSequencedMap<K,V> - Требования к реализации:
- Реализация в этом интерфейсе возвращает представление SortedMap в обратном порядке. Метод
reversed()этого представления возвращает ссылку на эту SortedMap. Другие операции над представлением реализуются посредством вызовов открытых методов этой SortedMap. Точная связь между вызовами для представления и вызовами для этой SortedMap не определена. Однако операции, чувствительные к порядку, обычно ведут себя так, как если бы они делегировали вызов соответствующему методу с противоположной ориентацией. Например, вызовfirstEntryдля представления может привести к вызовуlastEntryдля этой SortedMap. - Возвращает:
- представление этой карты в обратном порядке в виде
SortedMap - Начиная с версии:
- 21
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/util/SortedMap.html