Интерфейс SortedSet<E>
- Параметры типа:
E— тип элементов, хранящихся в этом множестве
- Все суперинтерфейсы:
Collection<E>, Iterable<E>, SequencedCollection<E>, SequencedSet<E>, Set<E>
- Все известные подынтерфейсы:
NavigableSet<E>
- Все известные реализующие классы:
ConcurrentSkipListSet, TreeSet
public interface SortedSet<E> extends Set<E>, SequencedSet<E>
Set, который дополнительно задаёт полный порядок своих элементов. Элементы упорядочиваются согласно их естественному порядку либо с помощью Comparator, обычно задаваемого при создании отсортированного множества. Итератор множества обходит его элементы в порядке возрастания. Для использования порядка предусмотрено несколько дополнительных операций. (Этот интерфейс является аналогом множества для SortedMap.) Все элементы, добавляемые в отсортированное множество, должны реализовывать интерфейс Comparable (или соответствовать указанному компаратору). Кроме того, все такие элементы должны быть взаимно сравнимыми: e1.compareTo(e2) (или comparator.compare(e1, e2)) не должны выбрасывать ClassCastException для любых элементов e1 и e2 в отсортированном множестве. Попытки нарушить это ограничение приведут к тому, что соответствующий вызов метода или конструктора выбросит ClassCastException.
Обратите внимание: порядок, поддерживаемый отсортированным множеством (независимо от того, предоставлен ли явный компаратор), должен быть согласован с equals, если отсортированное множество должно корректно реализовывать интерфейс Set. (Точное определение понятия согласован с equals см. в интерфейсе Comparable или Comparator.) Это необходимо потому, что интерфейс Set определён через операцию equals, но отсортированное множество сравнивает все элементы с помощью метода compareTo (или compare), поэтому с точки зрения отсортированного множества два элемента, признанные равными этим методом, являются равными. Поведение отсортированного множества остаётся определённым, даже если его порядок не согласован с equals; в этом случае оно лишь не соблюдает общий контракт интерфейса Set.
Все универсальные классы реализации отсортированного множества должны предоставлять четыре «стандартных» конструктора: 1) Конструктор без аргументов, создающий пустое отсортированное множество, упорядоченное согласно естественному порядку его элементов. 2) Конструктор с единственным аргументом типа Comparator, создающий пустое отсортированное множество, упорядоченное согласно указанному компаратору. 3) Конструктор с единственным аргументом типа Collection, создающий новое отсортированное множество с теми же элементами, что и аргумент, упорядоченными согласно естественному порядку элементов. 4) Конструктор с единственным аргументом типа SortedSet, создающий новое отсортированное множество с теми же элементами и тем же порядком, что и входное отсортированное множество. Обеспечить соблюдение этой рекомендации невозможно, поскольку интерфейсы не могут содержать конструкторы.
Примечание: некоторые методы возвращают подмножества с ограниченными диапазонами. Такие диапазоны являются полуоткрытыми, то есть включают нижнюю границу, но не включают верхнюю (если применимо). Если требуется замкнутый диапазон (включающий обе границы), а тип элементов позволяет вычислить следующее значение для заданного значения, достаточно запросить поддиапазон от lowEndpoint до successor(highEndpoint). Например, предположим, что s — отсортированное множество строк. Следующий идиоматический код получает представление, содержащее все строки в s от low до high включительно:
SortedSet<String> sub = s.subSet(low, high+"\0");Аналогичный приём можно использовать для создания открытого диапазона (не содержащего ни одну из границ). Следующий идиоматический код получает представление, содержащее все строки в
s от low до high, не включая границы:SortedSet<String> sub = s.subSet(low+"\0", high);
Этот интерфейс является частью Java Collections Framework.
- Начиная с версии:
- 1.2
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
default void |
addFirst |
Выбрасывает UnsupportedOperationException. |
default void |
addLast |
Выбрасывает UnsupportedOperationException. |
Comparator |
comparator() |
Возвращает компаратор, используемый для упорядочивания элементов этого множества, или null, если множество использует естественный порядок своих элементов. |
E |
first() |
Возвращает первый (наименьший) элемент, содержащийся в этом множестве в данный момент. |
default E |
getFirst() |
Возвращает первый элемент этой коллекции. |
default E |
getLast() |
Возвращает последний элемент этой коллекции. |
SortedSet |
headSet |
Возвращает представление части этого множества, элементы которой строго меньше toElement. |
E |
last() |
Возвращает последний (наибольший) элемент, содержащийся в этом множестве в данный момент. |
default E |
removeFirst() |
Удаляет и возвращает первый элемент этой коллекции (необязательная операция). |
default E |
removeLast() |
Удаляет и возвращает последний элемент этой коллекции (необязательная операция). |
default SortedSet |
reversed() |
Возвращает представление этой коллекции в обратном порядке (представление). |
default Spliterator |
spliterator() |
Создаёт Spliterator для элементов этого отсортированного множества. |
SortedSet |
subSet |
Возвращает представление части этого множества, элементы которой находятся в диапазоне от fromElement включительно до toElement исключительно. |
SortedSet |
tailSet |
Возвращает представление части этого множества, элементы которой больше или равны fromElement. |
Методы, объявленные в интерфейсе Collection
parallelStream, removeIf, stream, toArray
Подробное описание методов
comparator
Comparator<? super E> comparator()
null, если множество использует естественный порядок своих элементов.- Возвращает:
- компаратор, используемый для упорядочивания элементов этого множества, или
null, если множество использует естественный порядок своих элементов
subSet
SortedSet<E> subSet(E fromElement, E toElement)
fromElement включительно до toElement исключительно. (Если fromElement и toElement равны, возвращаемое множество пусто.) Возвращаемое множество поддерживается этим множеством, поэтому изменения в возвращаемом множестве отражаются в этом множестве, и наоборот. Возвращаемое множество поддерживает все необязательные операции с множествами, поддерживаемые этим множеством. При попытке вставить элемент за пределами своего диапазона возвращаемое множество выбросит IllegalArgumentException.
- Параметры:
-
fromElement— нижняя граница (включительно) возвращаемого множества -
toElement— верхняя граница (исключительно) возвращаемого множества - Возвращает:
- представление части этого множества, элементы которой находятся в диапазоне от
fromElementвключительно доtoElementисключительно - Выбрасывает:
-
ClassCastException— еслиfromElementиtoElementнельзя сравнить друг с другом с помощью компаратора этого множества (или, если у множества нет компаратора, с помощью естественного порядка). Реализации могут выбрасывать это исключение, еслиfromElementилиtoElementнельзя сравнить с элементами, уже содержащимися в множестве, но не обязаны это делать. -
NullPointerException— еслиfromElementилиtoElementимеет значение null, а это множество не допускает элементы null -
IllegalArgumentException— еслиfromElementбольшеtoElement; либо если само это множество имеет ограниченный диапазон, аfromElementилиtoElementнаходится за его пределами
headSet
SortedSet<E> headSet(E toElement)
toElement. Возвращаемое множество поддерживается этим множеством, поэтому изменения в возвращаемом множестве отражаются в этом множестве, и наоборот. Возвращаемое множество поддерживает все необязательные операции с множествами, поддерживаемые этим множеством. При попытке вставить элемент за пределами своего диапазона возвращаемое множество выбросит IllegalArgumentException.
- Параметры:
-
toElement— верхняя граница (исключительно) возвращаемого множества - Возвращает:
- представление части этого множества, элементы которой строго меньше
toElement - Выбрасывает:
-
ClassCastException— еслиtoElementнесовместим с компаратором этого множества (или, если у множества нет компаратора, еслиtoElementне реализуетComparable). Реализации могут выбрасывать это исключение, еслиtoElementнельзя сравнить с элементами, уже содержащимися в множестве, но не обязаны это делать. -
NullPointerException— еслиtoElementимеет значение null, а это множество не допускает элементы null -
IllegalArgumentException— если само это множество имеет ограниченный диапазон, аtoElementнаходится за его пределами
tailSet
SortedSet<E> tailSet(E fromElement)
fromElement. Возвращаемое множество поддерживается этим множеством, поэтому изменения в возвращаемом множестве отражаются в этом множестве, и наоборот. Возвращаемое множество поддерживает все необязательные операции с множествами, поддерживаемые этим множеством. При попытке вставить элемент за пределами своего диапазона возвращаемое множество выбросит IllegalArgumentException.
- Параметры:
-
fromElement— нижняя граница (включительно) возвращаемого множества - Возвращает:
- представление части этого множества, элементы которой больше или равны
fromElement - Выбрасывает:
-
ClassCastException— еслиfromElementнесовместим с компаратором этого множества (или, если у множества нет компаратора, еслиfromElementне реализуетComparable). Реализации могут выбрасывать это исключение, еслиfromElementнельзя сравнить с элементами, уже содержащимися в множестве, но не обязаны это делать. -
NullPointerException— еслиfromElementимеет значение null, а это множество не допускает элементы null -
IllegalArgumentException— если само это множество имеет ограниченный диапазон, аfromElementнаходится за его пределами
first
E first()
- Возвращает:
- первый (наименьший) элемент, содержащийся в этом множестве в данный момент
- Выбрасывает:
-
NoSuchElementException— если это множество пусто
last
E last()
- Возвращает:
- последний (наибольший) элемент, содержащийся в этом множестве в данный момент
- Выбрасывает:
-
NoSuchElementException— если это множество пусто
spliterator
default Spliterator<E> spliterator()
Spliterator для элементов этого отсортированного множества. Spliterator сообщает о характеристиках Spliterator.DISTINCT, Spliterator.SORTED и Spliterator.ORDERED. Реализациям следует документировать сведения о дополнительных значениях характеристик.
Компаратор сплитератора (см. Spliterator.getComparator()) должен быть null, если компаратор отсортированного множества (см. comparator()) равен null. В противном случае компаратор сплитератора должен совпадать с компаратором отсортированного множества или задавать тот же полный порядок.
- Определён в:
-
spliteratorв интерфейсеCollection<E> - Определён в:
-
spliteratorв интерфейсеIterable<E> - Определён в:
-
spliteratorв интерфейсеSet<E> - Требования к реализации:
- Реализация по умолчанию создаёт сплитератор с отложенной привязкой на основе
Iteratorотсортированного множества. Сплитератор наследует свойства fail-fast итератора множества. Компаратор сплитератора совпадает с компаратором отсортированного множества.Созданный
Spliteratorдополнительно сообщает о характеристикеSpliterator.SIZED. - Примечание по реализации:
- Созданный
Spliteratorдополнительно сообщает о характеристикеSpliterator.SUBSIZED. - Возвращает:
Spliteratorдля элементов этого отсортированного множества- Начиная с версии:
- 1.8
addFirst
default void addFirst(E e)
UnsupportedOperationException. Порядок обхода, задаваемый методом сравнения этого множества, определяет положение элементов, поэтому явное указание позиции не поддерживается.- Определён в:
-
addFirstв интерфейсеSequencedCollection<E> - Требования к реализации:
- Реализация в этом интерфейсе всегда выбрасывает
UnsupportedOperationException. - Параметры:
-
e— добавляемый элемент - Выбрасывает:
-
UnsupportedOperationException— всегда - Начиная с версии:
- 21
addLast
default void addLast(E e)
UnsupportedOperationException. Порядок обхода, задаваемый методом сравнения этого множества, определяет положение элементов, поэтому явное указание позиции не поддерживается.- Определён в:
-
addLastв интерфейсеSequencedCollection<E> - Требования к реализации:
- Реализация в этом интерфейсе всегда выбрасывает
UnsupportedOperationException. - Параметры:
-
e— добавляемый элемент. - Выбрасывает:
-
UnsupportedOperationException— всегда - Начиная с версии:
- 21
getFirst
default E getFirst()
- Определён в:
-
getFirstв интерфейсеSequencedCollection<E> - Требования к реализации:
- Реализация в этом интерфейсе возвращает результат вызова метода
first. - Возвращает:
- полученный элемент
- Выбрасывает:
-
NoSuchElementException— если эта коллекция пуста - Начиная с версии:
- 21
getLast
default E getLast()
- Определён в:
-
getLastв интерфейсеSequencedCollection<E> - Требования к реализации:
- Реализация в этом интерфейсе возвращает результат вызова метода
last. - Возвращает:
- полученный элемент
- Выбрасывает:
-
NoSuchElementException— если эта коллекция пуста - Начиная с версии:
- 21
removeFirst
default E removeFirst()
- Определён в:
-
removeFirstв интерфейсеSequencedCollection<E> - Требования к реализации:
- Реализация в этом интерфейсе вызывает метод
firstдля получения первого элемента, затем вызываетremove(element)для удаления элемента и возвращает этот элемент. - Возвращает:
- удалённый элемент
- Выбрасывает:
-
NoSuchElementException— если эта коллекция пуста -
UnsupportedOperationException— если реализация этой коллекции не поддерживает эту операцию - Начиная с версии:
- 21
removeLast
default E removeLast()
- Определён в:
-
removeLastв интерфейсеSequencedCollection<E> - Требования к реализации:
- Реализация в этом интерфейсе вызывает метод
lastдля получения последнего элемента, затем вызываетremove(element)для удаления элемента и возвращает этот элемент. - Возвращает:
- удалённый элемент
- Выбрасывает:
-
NoSuchElementException— если эта коллекция пуста -
UnsupportedOperationException— если реализация этой коллекции не поддерживает эту операцию - Начиная с версии:
- 21
reversed
default SortedSet<E> reversed()
- Определён в:
-
reversedв интерфейсеSequencedCollection<E> - Определён в:
-
reversedв интерфейсеSequencedSet<E> - Требования к реализации:
- Реализация в этом интерфейсе возвращает представление SortedSet в обратном порядке. Метод
reversed()этого представления возвращает ссылку на этот SortedSet. Другие операции с представлением реализуются посредством вызовов открытых методов этого SortedSet. Точная взаимосвязь между вызовами для представления и вызовами для этого SortedSet не определена. Однако операции, зависящие от порядка, обычно ведут себя так, как если бы они делегировали вызов соответствующему методу с противоположной ориентацией. Например, вызовgetFirstдля представления может привести к вызовуgetLastдля этого SortedSet. - Возвращает:
- представление этой коллекции в обратном порядке в виде
SortedSet - Начиная с версии:
- 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/SortedSet.html