Интерфейс Set<E>
- Параметры типа:
E- тип элементов, хранящихся в этом множестве
- Все суперинтерфейсы:
Collection<E>, Iterable<E>
- Все известные подинтерфейсы:
EventSet, NavigableSet<E>, SequencedSet<E>, SortedSet<E>
- Все известные реализующие классы:
AbstractSet, ConcurrentHashMap.KeySetView, ConcurrentSkipListSet, CopyOnWriteArraySet, EnumSet, HashSet, JobStateReasons, LinkedHashSet, TreeSet
public interface Set<E> extends Collection<E>
e1 и e2 таких, что e1.equals(e2), и содержат не более одного элемента null. Как следует из названия, этот интерфейс моделирует математическое понятие множества. Интерфейс Set предъявляет дополнительные требования к контрактам всех конструкторов, а также к контрактам методов add, equals и hashCode, помимо унаследованных от интерфейса Collection. Здесь также приведены объявления других унаследованных методов для удобства. (Спецификации, сопровождающие эти объявления, адаптированы для интерфейса Set, но не содержат дополнительных требований.)
Дополнительное требование к конструкторам, что неудивительно, заключается в том, что все конструкторы должны создавать множество без повторяющихся элементов (как определено выше).
Примечание. При использовании изменяемых объектов в качестве элементов множества следует проявлять особую осторожность. Поведение множества не определено, если значение объекта изменяется таким образом, что это влияет на сравнения equals, пока объект является элементом множества. Частным случаем этого запрета является недопустимость включения множества в качестве собственного элемента.
Некоторые реализации множеств накладывают ограничения на элементы, которые они могут содержать. Например, некоторые реализации запрещают элементы null, а некоторые ограничивают типы элементов. Попытка добавить недопустимый элемент приводит к выбросу непроверяемого исключения, обычно NullPointerException или ClassCastException. Попытка проверить наличие недопустимого элемента может привести к выбросу исключения или просто вернуть false; некоторые реализации ведут себя первым образом, а некоторые — вторым. В более общем случае попытка выполнить операцию с недопустимым элементом, завершение которой не привело бы к добавлению недопустимого элемента в множество, может привести к выбросу исключения или завершиться успешно — по усмотрению реализации. В спецификации этого интерфейса такие исключения помечены как «необязательные».
Немодифицируемые множества
Статические фабричные методы Set.of и Set.copyOf предоставляют удобный способ создания немодифицируемых множеств. Экземпляры Set, созданные этими методами, обладают следующими характеристиками:
- Они являются немодифицируемыми. Элементы нельзя добавлять или удалять. Вызов любого метода-мутатора для Set всегда приводит к выбросу
UnsupportedOperationException. Однако если содержащиеся в множестве элементы сами являются изменяемыми, это может привести к непоследовательному поведению Set или к тому, что его содержимое будет казаться изменившимся. - Они не допускают элементы
null. Попытки создать их с элементамиnullприводят кNullPointerException. - Они сериализуемы, если все элементы сериализуемы.
- Они отклоняют повторяющиеся элементы во время создания. Передача повторяющихся элементов статическому фабричному методу приводит к
IllegalArgumentException. - Порядок перебора элементов множества не определен и может изменяться.
- Они являются основанными на значениях. Программистам следует считать экземпляры, которые равны, взаимозаменяемыми и не использовать их для синхронизации, иначе может возникнуть непредсказуемое поведение. Например, в одном из будущих выпусков синхронизация может перестать работать. Вызывающий код не должен делать предположений об идентичности возвращаемых экземпляров. Фабричные методы могут создавать новые экземпляры или повторно использовать существующие.
- Они сериализуются в соответствии с описанием на странице Сериализованная форма.
Этот интерфейс входит в состав Java Collections Framework.
- Начиная с:
- 1.2
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Добавляет указанный элемент в это множество, если он еще не присутствует (необязательная операция). |
boolean |
addAll |
Добавляет все элементы указанной коллекции в это множество, если они еще не присутствуют (необязательная операция). |
void |
clear() |
Удаляет все элементы из этого множества (необязательная операция). |
boolean |
contains |
Возвращает true, если это множество содержит указанный элемент. |
boolean |
containsAll |
Возвращает true, если это множество содержит все элементы указанной коллекции. |
static <E> Set |
copyOf |
Возвращает немодифицируемое множество Set, содержащее элементы заданной коллекции. |
boolean |
equals |
Сравнивает указанный объект с этим множеством на равенство. |
int |
hashCode() |
Возвращает значение хеш-кода для этого множества. |
boolean |
isEmpty() |
Возвращает true, если это множество не содержит элементов. |
Iterator |
iterator() |
Возвращает итератор для перебора элементов этого множества. |
static <E> Set |
of() |
Возвращает немодифицируемое множество, содержащее ноль элементов. |
static <E> Set |
of |
Возвращает немодифицируемое множество, содержащее один элемент. |
static <E> Set |
of |
Возвращает немодифицируемое множество, содержащее произвольное количество элементов. |
static <E> Set |
of |
Возвращает немодифицируемое множество, содержащее два элемента. |
static <E> Set |
of |
Возвращает немодифицируемое множество, содержащее три элемента. |
static <E> Set |
of |
Возвращает немодифицируемое множество, содержащее четыре элемента. |
static <E> Set |
of |
Возвращает немодифицируемое множество, содержащее пять элементов. |
static <E> Set |
of |
Возвращает немодифицируемое множество, содержащее шесть элементов. |
static <E> Set |
of |
Возвращает немодифицируемое множество, содержащее семь элементов. |
static <E> Set |
of |
Возвращает немодифицируемое множество, содержащее восемь элементов. |
static <E> Set |
of |
Возвращает немодифицируемое множество, содержащее девять элементов. |
static <E> Set |
of |
Возвращает немодифицируемое множество, содержащее десять элементов. |
boolean |
remove |
Удаляет указанный элемент из этого множества, если он присутствует (необязательная операция). |
boolean |
removeAll |
Удаляет из этого множества все элементы, содержащиеся в указанной коллекции (необязательная операция). |
boolean |
retainAll |
Оставляет в этом множестве только элементы, содержащиеся в указанной коллекции (необязательная операция). |
int |
size() |
Возвращает количество элементов в этом множестве (его мощность). |
default Spliterator |
spliterator() |
Создает Spliterator для перебора элементов этого множества. |
Object[] |
toArray() |
Возвращает массив, содержащий все элементы этого множества. |
<T> T[] |
toArray |
Возвращает массив, содержащий все элементы этого множества; тип элементов возвращаемого массива во время выполнения совпадает с типом указанного массива. |
Методы, объявленные в интерфейсе Collection
parallelStream, removeIf, stream, toArray
Подробное описание методов
size
int size()
Integer.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.- Определено в:
-
sizeв интерфейсеCollection<E> - Возвращает:
- количество элементов в этом множестве (его мощность)
isEmpty
boolean isEmpty()
true, если это множество не содержит элементов.- Определено в:
-
isEmptyв интерфейсеCollection<E> - Возвращает:
-
true, если это множество не содержит элементов
contains
boolean contains(Object o)
true, если это множество содержит указанный элемент. Точнее, возвращает true тогда и только тогда, когда это множество содержит элемент e, для которого выполняется Objects.equals(o, e).- Определено в:
-
containsв интерфейсеCollection<E> - Параметры:
-
o— элемент, наличие которого в этом множестве необходимо проверить - Возвращает:
-
true, если это множество содержит указанный элемент - Вызывает исключение:
-
ClassCastException— если тип указанного элемента несовместим с этим множеством (необязательно) -
NullPointerException— если указанный элемент равен null, а это множество не допускает элементы null (необязательно)
iterator
Iterator<E> iterator()
toArray
Object[] toArray()
Возвращаемый массив будет «безопасным»: это множество не хранит на него ссылок. (Иными словами, этот метод должен выделять новый массив, даже если это множество основано на массиве.) Таким образом, вызывающий код может свободно изменять возвращенный массив.
Этот метод служит связующим звеном между API на основе массивов и API на основе коллекций.
- Определено в:
-
toArrayв интерфейсеCollection<E> - Возвращает:
- массив, содержащий все элементы этого множества
toArray
<T> T[] toArray(T[] a)
Если это множество помещается в указанный массив с запасом места (т. е. массив содержит больше элементов, чем это множество), элемент массива, непосредственно следующий за последним элементом множества, устанавливается в null. (Это полезно для определения размера этого множества только в том случае, если вызывающий код знает, что множество не содержит элементов null.)
Если это множество гарантирует определенный порядок возврата элементов итератором, этот метод должен возвращать элементы в том же порядке.
Как и метод toArray(), этот метод служит связующим звеном между API на основе массивов и API на основе коллекций. Кроме того, этот метод позволяет точно управлять типом выходного массива во время выполнения и при определенных обстоятельствах может использоваться для снижения затрат на выделение памяти.
Предположим, что x — это множество, о котором известно, что оно содержит только строки. Следующий код можно использовать для выгрузки множества в только что выделенный массив типа String:
String[] y = x.toArray(new String[0]); Обратите внимание, что toArray(new Object[0]) функционально идентичен toArray().- Определено в:
-
toArrayв интерфейсеCollection<E> - Параметры типа:
T— тип компонентов массива, в котором будет храниться коллекция- Параметры:
-
a— массив, в котором должны храниться элементы этого множества, если он достаточно велик; в противном случае для этой цели выделяется новый массив того же типа во время выполнения. - Возвращает:
- массив, содержащий все элементы этого множества
- Вызывает исключение:
-
ArrayStoreException— если тип указанного массива во время выполнения не является супертипом типа каждого элемента этого множества во время выполнения -
NullPointerException— если указанный массив равен null
add
boolean add(E e)
e в это множество, если множество не содержит элемента e2, для которого выполняется Objects.equals(e, e2). Если множество уже содержит этот элемент, вызов не изменяет множество и возвращает false. В сочетании с ограничениями на конструкторы это гарантирует, что множества никогда не содержат повторяющихся элементов. Приведенное выше условие не означает, что множества обязаны принимать любые элементы; множества могут отказаться добавлять любой конкретный элемент, в том числе null, и выбросить исключение, как описано в спецификации для Collection.add. Реализации множеств должны четко документировать любые ограничения на элементы, которые они могут содержать.
- Определено в:
-
addв интерфейсеCollection<E> - Параметры:
-
e— элемент, который необходимо добавить в это множество - Возвращает:
-
true, если это множество еще не содержало указанный элемент - Вызывает исключение:
-
UnsupportedOperationException— если операцияaddне поддерживается этим множеством -
ClassCastException— если класс указанного элемента не позволяет добавить его в это множество -
NullPointerException— если указанный элемент равен null, а это множество не допускает элементы null -
IllegalArgumentException— если какое-либо свойство указанного элемента не позволяет добавить его в это множество
remove
boolean remove(Object o)
e, для которого выполняется Objects.equals(o, e), если это множество содержит такой элемент. Возвращает true, если это множество содержало элемент (или, что равнозначно, если в результате вызова множество изменилось). (После возврата из вызова множество не будет содержать этот элемент.)- Определено в:
-
removeв интерфейсеCollection<E> - Параметры:
-
o— объект, который необходимо удалить из этого множества, если он присутствует - Возвращает:
-
true, если это множество содержало указанный элемент - Вызывает исключение:
-
ClassCastException— если тип указанного элемента несовместим с этим множеством (необязательно) -
NullPointerException— если указанный элемент равен null, а это множество не допускает элементы null (необязательно) -
UnsupportedOperationException— если операцияremoveне поддерживается этим множеством
containsAll
boolean containsAll(Collection<?> c)
true, если это множество содержит все элементы указанной коллекции. Если указанная коллекция также является множеством, этот метод возвращает true, если она является подмножеством этого множества.- Определено в:
-
containsAllв интерфейсеCollection<E> - Параметры:
-
c— коллекция, наличие элементов которой в этом множестве необходимо проверить - Возвращает:
-
true, если это множество содержит все элементы указанной коллекции - Вызывает исключение:
-
ClassCastException— если типы одного или нескольких элементов указанной коллекции несовместимы с этим множеством (необязательно) -
NullPointerException— если указанная коллекция содержит один или несколько элементов null, а это множество не допускает элементы null (необязательно), или если указанная коллекция равна null - См. также:
addAll
boolean addAll(Collection<? extends E> c)
addAll фактически изменяет это множество так, что его значение становится объединением двух множеств. Поведение этой операции не определено, если указанная коллекция изменяется во время ее выполнения.- Определено в:
-
addAllв интерфейсеCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые необходимо добавить в это множество - Возвращает:
-
true, если в результате вызова это множество изменилось - Вызывает исключение:
-
UnsupportedOperationException— если операцияaddAllне поддерживается этим множеством -
ClassCastException— если класс элемента указанной коллекции не позволяет добавить его в это множество -
NullPointerException— если указанная коллекция содержит один или несколько элементов null, а это множество не допускает элементы null, или если указанная коллекция равна null -
IllegalArgumentException— если какое-либо свойство элемента указанной коллекции не позволяет добавить его в это множество - См. также:
retainAll
boolean retainAll(Collection<?> c)
- Определено в:
-
retainAllв интерфейсеCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые необходимо оставить в этом множестве - Возвращает:
-
true, если в результате вызова это множество изменилось - Вызывает исключение:
-
UnsupportedOperationException— если операцияretainAllне поддерживается этим множеством -
ClassCastException— если класс элемента этого множества несовместим с указанной коллекцией (необязательно) -
NullPointerException— если это множество содержит элемент null, а указанная коллекция не допускает элементы null (необязательно), или если указанная коллекция равна null - См. также:
removeAll
boolean removeAll(Collection<?> c)
- Определено в:
-
removeAllв интерфейсеCollection<E> - Параметры:
-
c— коллекция, содержащая элементы, которые необходимо удалить из этого множества - Возвращает:
-
true, если в результате вызова это множество изменилось - Вызывает исключение:
-
UnsupportedOperationException— если операцияremoveAllне поддерживается этим множеством -
ClassCastException— если класс элемента этого множества несовместим с указанной коллекцией (необязательно) -
NullPointerException— если это множество содержит элемент null, а указанная коллекция не допускает элементы null (необязательно), или если указанная коллекция равна null - См. также:
clear
void clear()
- Определено в:
-
clearв интерфейсеCollection<E> - Вызывает исключение:
-
UnsupportedOperationException— если методclearне поддерживается этим множеством
equals
boolean equals(Object o)
true, если указанный объект также является множеством, оба множества имеют одинаковый размер и каждый элемент указанного множества содержится в этом множестве (или, что равнозначно, каждый элемент этого множества содержится в указанном множестве). Это определение гарантирует, что метод equals корректно работает с различными реализациями интерфейса множества.- Определено в:
-
equalsв интерфейсеCollection<E> - Переопределяет:
-
equalsв классеObject - Параметры:
-
o— объект, который необходимо сравнить с этим множеством на равенство - Возвращает:
-
true, если указанный объект равен этому множеству - См. также:
hashCode
int hashCode()
null определяется как ноль. Это гарантирует, что из s1.equals(s2) следует s1.hashCode()==s2.hashCode() для любых двух множеств s1 и s2, как того требует общий контракт Object.hashCode().- Определено в:
-
hashCodeв интерфейсеCollection<E> - Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение хеш-кода этого множества
- См. также:
spliterator
default Spliterator<E> spliterator()
Spliterator для элементов этого множества. Spliterator сообщает о характеристике Spliterator.DISTINCT. Реализации должны документировать наличие дополнительных значений характеристик.
- Определено в:
-
spliteratorв интерфейсеCollection<E> - Определено в:
-
spliteratorв интерфейсеIterable<E> - Требования к реализации:
- Реализация по умолчанию создает сплитератор с отложенной привязкой на основе
Iteratorмножества. Сплитератор наследует свойства итератора множества, связанные с быстрым обнаружением изменений.Созданный
Spliteratorдополнительно сообщает о характеристикеSpliterator.SIZED. - Примечание по реализации:
- Созданный
Spliteratorдополнительно сообщает о характеристикеSpliterator.SUBSIZED. - Возвращает:
Spliteratorдля элементов этого множества- Начиная с версии:
- 1.8
of
static <E> Set<E> of()
- Параметры типа:
E— тип элементовSet- Возвращает:
- пустое
Set - Начиная с версии:
- 9
of
static <E> Set<E> of(E e1)
- Параметры типа:
E— тип элементовSet- Параметры:
-
e1— единственный элемент - Возвращает:
Set, содержащее указанный элемент- Вызывает исключение:
-
NullPointerException— если элемент равенnull - Начиная с версии:
- 9
of
static <E> Set<E> of(E e1, E e2)
- Параметры типа:
E— тип элементовSet- Параметры:
-
e1— первый элемент -
e2— второй элемент - Возвращает:
Set, содержащее указанные элементы- Вызывает исключение:
-
IllegalArgumentException— если элементы повторяются -
NullPointerException— если элемент равенnull - Начиная с версии:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3)
- Параметры типа:
E— тип элементовSet- Параметры:
-
e1— первый элемент -
e2— второй элемент -
e3— третий элемент - Возвращает:
Set, содержащее указанные элементы- Вызывает исключение:
-
IllegalArgumentException— если присутствуют повторяющиеся элементы -
NullPointerException— если элемент равенnull - Начиная с версии:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4)
- Параметры типа:
E— тип элементовSet- Параметры:
-
e1— первый элемент -
e2— второй элемент -
e3— третий элемент -
e4— четвертый элемент - Возвращает:
Set, содержащее указанные элементы- Вызывает исключение:
-
IllegalArgumentException— если присутствуют повторяющиеся элементы -
NullPointerException— если элемент равенnull - Начиная с версии:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5)
- Параметры типа:
E— тип элементовSet- Параметры:
-
e1— первый элемент -
e2— второй элемент -
e3— третий элемент -
e4— четвертый элемент -
e5— пятый элемент - Возвращает:
Set, содержащее указанные элементы- Вызывает исключение:
-
IllegalArgumentException— если присутствуют повторяющиеся элементы -
NullPointerException— если элемент равенnull - Начиная с версии:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6)
- Параметры типа:
E— тип элементовSet- Параметры:
-
e1— первый элемент -
e2— второй элемент -
e3— третий элемент -
e4— четвертый элемент -
e5— пятый элемент -
e6— шестой элемент - Возвращает:
Set, содержащее указанные элементы- Вызывает исключение:
-
IllegalArgumentException— если присутствуют повторяющиеся элементы -
NullPointerException— если элемент равенnull - Начиная с версии:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7)
- Параметры типа:
E— тип элементовSet- Параметры:
-
e1— первый элемент -
e2— второй элемент -
e3— третий элемент -
e4— четвертый элемент -
e5— пятый элемент -
e6— шестой элемент -
e7— седьмой элемент - Возвращает:
Set, содержащее указанные элементы- Вызывает исключение:
-
IllegalArgumentException— если присутствуют повторяющиеся элементы -
NullPointerException— если элемент равенnull - Начиная с версии:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8)
- Параметры типа:
E— тип элементовSet- Параметры:
-
e1— первый элемент -
e2— второй элемент -
e3— третий элемент -
e4— четвертый элемент -
e5— пятый элемент -
e6— шестой элемент -
e7— седьмой элемент -
e8— восьмой элемент - Возвращает:
Set, содержащее указанные элементы- Вызывает исключение:
-
IllegalArgumentException— если присутствуют повторяющиеся элементы -
NullPointerException— если элемент равенnull - Начиная с версии:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9)
- Параметры типа:
E— тип элементовSet- Параметры:
-
e1— первый элемент -
e2— второй элемент -
e3— третий элемент -
e4— четвертый элемент -
e5— пятый элемент -
e6— шестой элемент -
e7— седьмой элемент -
e8— восьмой элемент -
e9— девятый элемент - Возвращает:
Set, содержащее указанные элементы- Вызывает исключение:
-
IllegalArgumentException— если присутствуют повторяющиеся элементы -
NullPointerException— если элемент равенnull - Начиная с версии:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8, E e9, E e10)
- Параметры типа:
E— тип элементовSet- Параметры:
-
e1— первый элемент -
e2— второй элемент -
e3— третий элемент -
e4— четвёртый элемент -
e5— пятый элемент -
e6— шестой элемент -
e7— седьмой элемент -
e8— восьмой элемент -
e9— девятый элемент -
e10— десятый элемент - Возвращает:
Set, содержащее указанные элементы- Вызывает исключение:
-
IllegalArgumentException— если имеются повторяющиеся элементы -
NullPointerException— если элементnull - Начиная с версии:
- 9
of
@SafeVarargs static <E> Set<E> of(E... elements)
- Примечание к API:
- Этот метод также принимает в качестве аргумента один массив. Типом элементов результирующего множества будет тип компонентов массива, а размер множества будет равен длине массива. Чтобы создать множество с одним элементом, которым является массив, выполните следующие действия:
В этом случае вместо него будет вызван методString[] array = ... ; Set<String[]> list = Set.<String[]>of(array);Set.of(E). - Параметры типа:
E— тип элементовSet- Параметры:
-
elements— элементы, которые должны содержаться в множестве - Возвращает:
Set, содержащее указанные элементы- Вызывает исключение:
-
IllegalArgumentException— если имеются повторяющиеся элементы -
NullPointerException— если элементnullили массивnull - Начиная с версии:
- 9
copyOf
static <E> Set<E> copyOf(Collection<? extends E> coll)
- Примечание по реализации:
- Если указанная коллекция является неизменяемым множеством, вызов copyOf, как правило, не создаёт копию.
- Параметры типа:
E— тип элементовSet- Параметры:
-
coll—Collection, из которой берутся элементы; не должна быть null - Возвращает:
Set, содержащее элементы указаннойCollection- Вызывает исключение:
-
NullPointerException— если coll равна null или содержит элементы null - Начиная с версии:
- 10
© 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/Set.html