Spec-Zone.ru › OpenJDK 27

Интерфейс 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), поэтому два ключа, признанные равными этим методом, считаются равными с точки зрения отсортированной карты. Поведение TreeMap определено и в том случае, если ее порядок не согласован с equals; просто она не соблюдает общий контракт интерфейса Map.

Все универсальные реализации отсортированных карт должны предоставлять четыре «стандартных» конструктора. Однако обеспечить это требование невозможно, поскольку интерфейсы не могут задавать обязательные конструкторы. Ожидаемые «стандартные» конструкторы для всех реализаций отсортированных карт:

  1. Конструктор без аргументов, создающий пустую отсортированную карту, упорядоченную согласно естественному порядку ключей.
  2. Конструктор с единственным аргументом типа Comparator, создающий пустую отсортированную карту, упорядоченную согласно указанному компаратору.
  3. Конструктор с единственным аргументом типа Map, создающий новую карту с теми же сопоставлениями ключей и значений, что и аргумент, упорядоченную согласно естественному порядку ключей.
  4. Конструктор с единственным аргументом типа 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
См. также:
  • Map
  • TreeMap
  • SortedSet
  • Comparator
  • Comparable
  • Collection
  • ClassCastException

Краткое описание вложенных классов

Вложенные классы/интерфейсы, объявленные в интерфейсе Map

Map.Entry<K,V>
Модификатор и тип Интерфейс Описание
static interface  Map.Entry<K,V>
Запись карты (пара ключ-значение).

Краткое описание методов

Модификатор и тип Метод Описание
Comparator<? super K> comparator()
Возвращает компаратор, используемый для упорядочения ключей в этой карте, или null, если карта использует естественный порядок ключей.
Set<Map.Entry<K,V>> entrySet()
Возвращает представление сопоставлений, содержащихся в этой карте, в виде Set.
K firstKey()
Возвращает первый (наименьший) ключ, присутствующий в этой карте.
SortedMap<K,V> headMap(K toKey)
Возвращает представление части этой карты, ключи которой строго меньше toKey.
Set<K> keySet()
Возвращает представление ключей, содержащихся в этой карте, в виде Set.
K lastKey()
Возвращает последний (наибольший) ключ, присутствующий в этой карте.
default V putFirst(K k, V v)
Выбрасывает UnsupportedOperationException.
default V putLast(K k, V v)
Выбрасывает UnsupportedOperationException.
default SortedMap<K,V> reversed()
Возвращает представление этой карты в обратном порядке.
SortedMap<K,V> subMap(K fromKey, K toKey)
Возвращает представление части этой карты, ключи которой находятся в диапазоне от fromKey включительно до toKey исключительно.
SortedMap<K,V> tailMap(K fromKey)
Возвращает представление части этой карты, ключи которой больше или равны fromKey.
Collection<V> 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
Модификатор и тип Метод Описание
void clear()
Удаляет все сопоставления из этой карты (необязательная операция).
default V compute(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Пытается вычислить сопоставление для указанного ключа и его текущего отображаемого значения или null, если текущего сопоставления нет (необязательная операция).
default V computeIfAbsent(K key, Function<? super K, ? extends V> mappingFunction)
Если указанному ключу еще не сопоставлено значение (или ему сопоставлено null), пытается вычислить его значение с помощью заданной функции отображения и добавляет его в эту карту, если только результат не равен null (необязательная операция).
default V computeIfPresent(K key, BiFunction<? super K, ? super V, ? extends V> remappingFunction)
Если для указанного ключа присутствует ненулевое значение, пытается вычислить новое сопоставление с учетом ключа и текущего отображаемого значения (необязательная операция).
boolean containsKey(Object key)
Возвращает true, если эта карта содержит сопоставление для указанного ключа.
boolean containsValue(Object value)
Возвращает true, если в этой карте один или несколько ключей сопоставлены с указанным значением.
boolean equals(Object o)
Сравнивает указанный объект с этой картой на равенство.
default void forEach(BiConsumer<? super K, ? super V> action)
Выполняет заданное действие для каждой записи этой карты, пока не будут обработаны все записи или действие не выбросит исключение.
V get(Object key)
Возвращает значение, сопоставленное указанному ключу, или null, если в этой карте нет сопоставления для ключа.
default V getOrDefault(Object key, V defaultValue)
Возвращает значение, сопоставленное указанному ключу, или defaultValue, если в этой карте нет сопоставления для ключа.
int hashCode()
Возвращает хеш-код этой карты.
boolean isEmpty()
Возвращает true, если эта карта не содержит сопоставлений ключей и значений.
default V merge(K key, V value, BiFunction<? super V, ? super V, ? extends V> remappingFunction)
Если указанному ключу еще не сопоставлено значение или ему сопоставлено null, сопоставляет его с заданным ненулевым значением (необязательная операция).
V put(K key, V value)
Сопоставляет указанное значение с указанным ключом в этой карте (необязательная операция).
void putAll(Map<? extends K, ? extends V> m)
Копирует все сопоставления из указанной карты в эту карту (необязательная операция).
default V putIfAbsent(K key, V value)
Если указанному ключу еще не сопоставлено значение (или ему сопоставлено null), сопоставляет его с заданным значением и возвращает null; в противном случае возвращает текущее значение (необязательная операция).
V remove(Object key)
Удаляет из этой карты сопоставление для ключа, если оно присутствует (необязательная операция).
default boolean remove(Object key, Object value)
Удаляет запись для указанного ключа, только если ему в данный момент сопоставлено указанное значение (необязательная операция).
default V replace(K key, V value)
Заменяет запись для указанного ключа, только если ему в данный момент сопоставлено какое-либо значение (необязательная операция).
default boolean replace(K key, V oldValue, V newValue)
Заменяет запись для указанного ключа, только если ему в данный момент сопоставлено указанное значение (необязательная операция).
default void replaceAll(BiFunction<? super K, ? super V, ? extends V> function)
Заменяет значение каждой записи результатом вызова заданной функции для этой записи, пока не будут обработаны все записи или функция не выбросит исключение (необязательная операция).
int size()
Возвращает количество сопоставлений ключей и значений в этой карте.

Методы, объявленные в интерфейсе SequencedMap

firstEntry, lastEntry, pollFirstEntry, pollLastEntry, sequencedEntrySet, sequencedKeySet, sequencedValues
Модификатор и тип Метод Описание
default Map.Entry<K,V> firstEntry()
Возвращает первое сопоставление ключа и значения в этой карте или null, если карта пуста.
default Map.Entry<K,V> lastEntry()
Возвращает последнее сопоставление ключа и значения в этой карте или null, если карта пуста.
default Map.Entry<K,V> pollFirstEntry()
Удаляет и возвращает первое сопоставление ключа и значения в этой карте или null, если карта пуста (необязательная операция).
default Map.Entry<K,V> pollLastEntry()
Удаляет и возвращает последнее сопоставление ключа и значения в этой карте или null, если карта пуста (необязательная операция).
default SequencedSet<Map.Entry<K,V>> sequencedEntrySet()
Возвращает представление SequencedSet для entrySet этой карты.
default SequencedSet<K> sequencedKeySet()
Возвращает представление SequencedSet для keySet этой карты.
default SequencedCollection<V> sequencedValues()
Возвращает представление SequencedCollection для коллекции values этой карты.

Подробное описание методов

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, а эта карта не допускает нулевые ключи
IllegalArgumentException — если fromKey больше toKey; или если диапазон самой карты ограничен, а fromKey или toKey находится за его пределами

headMap

SortedMap<K,V> headMap(K toKey)
Возвращает представление части этой карты, ключи которой строго меньше toKey. Возвращаемая карта связана с этой картой, поэтому изменения в возвращаемой карте отражаются в этой карте, и наоборот. Возвращаемая карта поддерживает все необязательные операции с картами, поддерживаемые этой картой.

При попытке вставить ключ за пределами диапазона возвращаемая карта выбросит IllegalArgumentException.

Параметры:
toKey — верхняя граница (исключительно) ключей возвращаемой карты
Возвращает:
представление части этой карты, ключи которой строго меньше toKey
Выбрасывает:
ClassCastException — если toKey несовместим с компаратором этой карты (или, если у карты нет компаратора, если toKey не реализует Comparable). Реализации могут выбрасывать это исключение, если toKey нельзя сравнить с ключами, имеющимися в карте, но не обязаны этого делать.
NullPointerException — если toKey равно null, а эта карта не допускает нулевые ключи
IllegalArgumentException — если диапазон самой карты ограничен, а toKey находится за его пределами

tailMap

SortedMap<K,V> tailMap(K fromKey)
Возвращает представление части этой карты, ключи которой больше или равны fromKey. Возвращаемая карта связана с этой картой, поэтому изменения в возвращаемой карте отражаются в этой карте, и наоборот. Возвращаемая карта поддерживает все необязательные операции с картами, поддерживаемые этой картой.

При попытке вставить ключ за пределами диапазона возвращаемая карта выбросит IllegalArgumentException.

Параметры:
fromKey — нижняя граница (включительно) ключей возвращаемой карты
Возвращает:
представление части этой карты, ключи которой больше или равны fromKey
Выбрасывает:
ClassCastException — если fromKey несовместим с компаратором этой карты (или, если у карты нет компаратора, если fromKey не реализует Comparable). Реализации могут выбрасывать это исключение, если fromKey нельзя сравнить с ключами, имеющимися в карте, но не обязаны этого делать.
NullPointerException — если fromKey равно 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 не поддерживаются.
Определено в:
keySet в интерфейсе Map<K,V>
Возвращает:
представление ключей этой карты в виде множества, упорядоченных по возрастанию

values

Collection<V> values()
Возвращает представление значений, содержащихся в этой карте, в виде Collection. Итератор коллекции возвращает значения в порядке возрастания соответствующих ключей. Коллекция связана с картой, поэтому изменения в карте отражаются в коллекции, и наоборот. Если карта изменяется во время перебора коллекции (за исключением изменений, выполненных собственной операцией remove итератора), результаты перебора не определены. Коллекция поддерживает удаление элементов, при котором из карты удаляется соответствующее сопоставление, с помощью операций Iterator.remove, Collection.remove, removeAll, retainAll и clear. Операции add и addAll не поддерживаются.
Определено в:
values в интерфейсе Map<K,V>
Возвращает:
представление значений этой карты в виде коллекции, упорядоченных по возрастанию ключей

entrySet

Set<Map.Entry<K,V>> entrySet()
Возвращает представление сопоставлений, содержащихся в этой карте, в виде Set. Итератор множества возвращает записи в порядке возрастания ключей. Множество связано с картой, поэтому изменения в карте отражаются во множестве, и наоборот. Если карта изменяется во время перебора множества (за исключением изменений, выполненных собственной операцией remove итератора или операцией setValue для записи карты, возвращенной итератором), результаты перебора не определены. Множество поддерживает удаление элементов, при котором из карты удаляется соответствующее сопоставление, с помощью операций Iterator.remove, Set.remove, removeAll, retainAll и clear. Операции add и addAll не поддерживаются.
Определено в:
entrySet в интерфейсе Map<K,V>
Возвращает:
представление сопоставлений этой карты в виде множества, упорядоченных по возрастанию ключей

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

Сообщить об ошибке или предложить улучшение
Дополнительную справочную информацию по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, включая концептуальные обзоры, определения терминов, обходные решения и рабочие примеры кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или ее дочерних компаний в США и других странах.
Авторские права © 1993, 2026, Oracle и/или ее дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065, США.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API