Интерфейс Set
- Параметры типа:
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), и не более одного нулевого элемента. Как следует из названия, этот интерфейс моделирует абстракцию математического множества. Интерфейс Set накладывает дополнительные условия, помимо тех, которые унаследованы от интерфейса Collection, на контракты всех конструкторов и на контракты методов add, equals и hashCode. Декларации других унаследованных методов также включены сюда для удобства. (Спецификации, сопровождающие эти декларации, адаптированы к интерфейсу Set, но они не содержат никаких дополнительных условий.)
Дополнительное условие для конструкторов, как ни странно, заключается в том, что все конструкторы должны создавать множество, которое не содержит дублирующих элементов (как определено выше).
Примечание: необходимо проявлять особую осторожность, если в качестве элементов множества используются изменяемые объекты. Поведение множества не определено, если значение объекта изменяется таким образом, что влияет на equals сравнения, пока объект является элементом множества. Специальным случаем этого запрета является то, что множество не может содержать себя в качестве элемента.
Некоторые реализации множеств имеют ограничения на элементы, которые они могут содержать. Например, некоторые реализации запрещают нулевые элементы, а некоторые имеют ограничения на типы своих элементов. Попытка добавить недопустимый элемент вызывает неконтролируемую ошибку, обычно NullPointerException или ClassCastException. Попытка запросить наличие недопустимого элемента может вызвать ошибку или просто вернуть false; некоторые реализации будут проявлять первое поведение, а некоторые — второе. Более общим образом, попытка операции над недопустимым элементом, завершение которой не приведет к вставке недопустимого элемента в множество, может вызвать исключение или может выполниться успешно, по выбору реализации. Такие исключения помечены как «необязательные» в спецификации для этого интерфейса.
Неизменяемые множества
Статические фабричные методы Set.of и Set.copyOf предоставляют удобный способ создания неизменяемых множеств. Множества Set, созданные этими методами, имеют следующие характеристики:
- Они являются неизменяемыми. Элементы не могут быть добавлены или удалены. Вызов любого метода-мутатора множества всегда приведет к тому, что будет брошено
UnsupportedOperationException. Однако, если сами содержащиеся элементы изменяемы, это может привести к тому, что множество будет вести себя несогласованно или его содержимое будет казаться изменяющимся. - Они не допускают
nullэлементы. Попытки создать их сnullэлементами приводят кNullPointerException. - Они сериализуемы, если все элементы сериализуемы.
- Они отклоняют дублирующие элементы во время создания. Дублирующие элементы, переданные в фабричный метод, приводят к
IllegalArgumentException. - Порядок итерации элементов множества не определен и может быть изменен.
- Они являются значение-ориентированными. Программисты должны рассматривать эквивалентные по значению экземпляры как взаимозаменяемые и не должны использовать их для синхронизации, иначе может произойти непредсказуемое поведение. Например, в будущих выпусках синхронизация может быть нарушена. Вызывающие методы не должны делать никаких предположений об идентичности возвращаемых экземпляров. Фабрики свободны создавать новые экземпляры или повторно использовать существующие.
- Они сериализуются так, как указано на странице Сериализованная форма.
Этот интерфейс является членом фреймворка Java Collections.
- C момента:
- 1.2
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Добавляет указанный элемент в этот набор, если он ещё не присутствует (необязательная операция). |
boolean |
addAll |
Добавляет все элементы из указанного набора в этот набор, если они ещё не присутствуют (необязательная операция). |
void |
clear() |
Удаляет все элементы из этого набора (необязательная операция). |
boolean |
contains |
Возвращает значение true, если этот набор содержит указанный элемент. |
boolean |
containsAll |
Возвращает значение true, если этот набор содержит все элементы указанного набора. |
static <E> Set |
copyOf |
Возвращает неизменяемый набор содержащий элементы заданного набора. |
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 |
Возвращает массив, содержащий все элементы в этом наборе; тип возвращаемого массива соответствует типу заданного массива. |
Методы, объявленные в интерфейсе java.util.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.
- Указано в:
-
toArrayв интерфейсеCollection<E> - Возвращает:
- массив, содержащий все элементы в этом множестве
toArray
<T> T[] toArray(T[] a)
Если это множество помещается в указанный массив с избытком (т. е. массив имеет больше элементов, чем это множество), элемент в массиве, непосредственно следующий за концом множества, устанавливается в null. (Это полезно для определения длины этого множества *только* если вызывающая сторона знает, что это множество не содержит null-элементов.)
Если это множество гарантирует какой-либо порядок возвращаемых итератором элементов, этот метод должен вернуть элементы в том же порядке.
Как и метод toArray(), этот метод действует как мост между основанными на массивах и основанными на коллекциях 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 -
IllegalArgumentException- если какое-либо свойство элемента указанного набора препятствует его добавлению в этот набор - См. также:
retainAll
boolean retainAll(Collection<?> c)
- Определено в:
-
retainAllв интерфейсеCollection<E> - Параметры:
-
c- набор, содержащий элементы, которые должны быть сохранены в этом наборе - Возвращает:
-
true, если этот набор изменился в результате вызова - Исключение:
-
UnsupportedOperationException- если операцияretainAllне поддерживается этим набором -
ClassCastException- если класс элемента этого набора несовместим с указанным набором (дополнительное) -
NullPointerException- если этот набор содержит нулевой элемент, а указанный набор не допускает нулевых элементов (дополнительное), или если указанный набор равен null - См. также:
removeAll
boolean removeAll(Collection<?> c)
- Определено в:
-
removeAllв интерфейсеCollection<E> - Параметры:
-
c- набор, содержащий элементы, которые должны быть удалены из этого набора - Возвращает:
-
true, если этот набор изменился в результате вызова - Исключение:
-
UnsupportedOperationException- если операцияremoveAllне поддерживается этим набором -
ClassCastException- если класс элемента этого набора несовместим с указанным набором (дополнительное) -
NullPointerException- если этот набор содержит нулевой элемент, а указанный набор не допускает нулевых элементов (дополнительное), или если указанный набор равен null - См. также:
clear
void clear()
- Определено в:
-
clearв интерфейсеCollection<E> - Исключение:
-
UnsupportedOperationException- если методclearне поддерживается этим набором
equals
boolean equals(Object o)
true, если указанный объект также является набором, у двух наборов одинаковый размер, и каждый член указанного набора содержится в этом наборе (или, что эквивалентно, каждый член этого набора содержится в указанном наборе). Это определение гарантирует, что метод equals работает правильно для различных реализаций интерфейса set.- Определено в:
-
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> - Требования к реализации:
- По умолчанию реализация создает отложенное связывание spliterator из
Iteratorнабора. Spliterator наследует свойства fail-fast итератора набора.Созданный
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)
- Type Parameters:
E- тип элементаSet- Parameters:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент - Returns:
- неизменяемое множество, содержащее указанные элементы
- Throws:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnull - Since:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4)
- Type Parameters:
E- тип элементаSet- Parameters:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент - Returns:
- неизменяемое множество, содержащее указанные элементы
- Throws:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnull - Since:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5)
- Type Parameters:
E- тип элементаSet- Parameters:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент - Returns:
- неизменяемое множество, содержащее указанные элементы
- Throws:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnull - Since:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6)
- Type Parameters:
E- тип элементаSet- Parameters:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент -
e6- шестой элемент - Returns:
- неизменяемое множество, содержащее указанные элементы
- Throws:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnull - Since:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7)
- Type Parameters:
E- тип элементаSet- Parameters:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент -
e6- шестой элемент -
e7- седьмой элемент - Returns:
- неизменяемое множество, содержащее указанные элементы
- Throws:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnull - Since:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6, E e7, E e8)
- Type Parameters:
E- тип элементаSet- Parameters:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент -
e6- шестой элемент -
e7- седьмой элемент -
e8- восьмой элемент - Returns:
- неизменяемое множество, содержащее указанные элементы
- Throws:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnull - Since:
- 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)
- Type Parameters:
E- тип элементаSet- Parameters:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент -
e6- шестой элемент -
e7- седьмой элемент -
e8- восьмой элемент -
e9- девятый элемент - Returns:
- неизменяемое множество, содержащее указанные элементы
- Throws:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnull - Since:
- 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)
- Type Parameters:
E- тип элементаSet- Parameters:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент -
e6- шестой элемент -
e7- седьмой элемент -
e8- восьмой элемент -
e9- девятый элемент -
e10- десятый элемент - Returns:
- неизменяемое множество, содержащее указанные элементы
- Throws:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnull - Since:
- 9
of
@SafeVarargs static <E> Set<E> of(E... elements)
- API Note:
- Этот метод также принимает один массив в качестве аргумента. Тип элемента результирующего множества будет типом компонентов массива, а размер множества будет равен длине массива. Для создания множества с одним элементом, который является массивом, выполните следующие действия:
Это вызовет методString[] array = ... ; Set<String[]> list = Set.<String[]>of(array);Set.of(E)вместо этого. - Type Parameters:
E- тип элементаSet- Parameters:
-
elements- элементы, которые должны быть включены в множество - Returns:
- неизменяемое множество, содержащее указанные элементы
- Throws:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnullили если массив являетсяnull - Since:
- 9
copyOf
static <E> Set<E> copyOf(Collection<? extends E> coll)
- Замечание по реализации:
- Если заданный набор является неизменяемым множеством, вызов copyOf обычно не создаёт копию.
- Параметры типа:
E- тип элементаSet- Параметры:
-
coll- набор, из которого берутся элементы, не должен быть null - Возвращаемое значение:
- множество, содержащее элементы заданного набора
- Исключения:
-
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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/util/Set.html