Spec-Zone.ru › OpenJDK 25

Интерфейс 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.

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

  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>

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

Модификатор и тип Метод Описание
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

Методы, объявленные в интерфейсе 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 не поддерживаются.
Определено в:
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, 2025, Oracle и/или её дочерние компании, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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

Spec-Zone.ru

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