Интерфейс SortedMap<K,V>
- Параметры типа:
-
K- тип ключей, поддерживаемых этим отображением -
V- тип сопоставленных значений
- Все суперинтерфейсы:
- Map<K,V>
- Все известные подинтерфейсы:
- ConcurrentNavigableMap<K,V>, NavigableMap<K,V>
- Все известные реализующие классы:
- ConcurrentSkipListMap, TreeMap
public interface SortedMap<K,V> extends Map<K,V>
A Map который дополнительно предоставляет полный порядок по своим ключам. Отображение упорядочено в соответствии с естественным порядком своих ключей или по Comparator, обычно предоставляемому во время создания отсортированного отображения. Этот порядок отражается при итерации по коллекционным представлениям отсортированного отображения (возвращаемым методами entrySet, keySet и values). Предоставлено несколько дополнительных операций для использования порядка. (Этот интерфейс является аналогом отображения SortedSet.)
Все ключи, вставленные в отсортированное отображение, должны реализовывать интерфейс Comparable (или быть принятыми указанным компаратором). Кроме того, все такие ключи должны быть взаимно сравнимы: k1.compareTo(k2) (или comparator.compare(k1, k2)) не должно выбрасывать ClassCastException для любых ключей k1 и k2 в отсортированном отображении. Попытки нарушения этого ограничения приведут к тому, что вызов метода или конструктора, нарушившего ограничение, выбросит ClassCastException.
Обратите внимание, что порядок, поддерживаемый отсортированным отображением (с предоставленным или без явного компаратора), должен быть совместим с equals, если отсортированное отображение должно правильно реализовывать интерфейс Map. (См. интерфейс Comparable или интерфейс Comparator для точного определения совместимости с equals.) Это так, потому что интерфейс 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
- См. также:
-
Map,TreeMap,SortedSet,Comparator,Comparable,Collection,ClassCastException
Вложенные классы
Вложенные классы/интерфейсы, унаследованные от интерфейса java.util.Map
Map.Entry<K,V> Методы
| Модификатор и тип | Метод и описание |
|---|---|
Comparator<? super K> |
comparator() Возвращает компаратор, используемый для упорядочения ключей в этом отображении, или |
Set<Map.Entry<K,V>> |
entrySet() Возвращает представление |
K |
firstKey() Возвращает первый (наименьший) ключ, в данный момент находящийся в этом отображении. |
SortedMap<K,V> |
headMap(K toKey) Возвращает представление части этого отображения, ключи которого строго меньше |
Set<K> |
keySet() Возвращает представление |
K |
lastKey() Возвращает последний (наибольший) ключ, в данный момент находящийся в этом отображении. |
SortedMap<K,V> |
subMap(K fromKey,
K toKey) Возвращает представление части этого отображения, ключи которого находятся в диапазоне от |
SortedMap<K,V> |
tailMap(K fromKey) Возвращает представление части этого отображения, ключи которого больше или равны |
Collection<V> |
values() Возвращает представление |
Методы, унаследованные от интерфейса java.util.Map
clear, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, equals, forEach, get, getOrDefault, hashCode, isEmpty, merge, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size Методы
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.
© 1993, 2020, 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.