Интерфейс 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), и не более одного нулевого элемента. Как следует из его названия, этот интерфейс моделирует абстракцию математического множества. Интерфейс Set накладывает дополнительные условия, помимо унаследованных от интерфейса Collection, на контракты всех конструкторов и на контракты методов add, equals и hashCode. Объявления других унаследованных методов также включены сюда для удобства. (Спецификации, сопровождающие эти объявления, адаптированы к интерфейсу Set, но они не содержат дополнительных положений.)
Дополнительное условие для конструкторов, как нетрудно догадаться, заключается в том, что все конструкторы должны создавать множество, не содержащее дублирующих элементов (как определено выше).
Примечание: Необходимо проявлять особую осторожность, если в качестве элементов множества используются изменяемые объекты. Поведение множества не определено, если значение объекта изменяется таким образом, что влияет на equals сравнения, пока объект является элементом множества. Специальным случаем этого запрета является то, что множество не может содержать себя как элемент.
Некоторые реализации множеств имеют ограничения на элементы, которые они могут содержать. Например, некоторые реализации запрещают нулевые элементы, а некоторые имеют ограничения на типы элементов. Попытка добавить неприемлемый элемент вызывает необработанное исключение, как правило, NullPointerException или ClassCastException. Попытка запросить наличие неприемлемого элемента может вызвать исключение или просто вернуть false; некоторые реализации проявят первое поведение, а некоторые — второе. В более общем плане, попытка выполнения операции с неприемлемым элементом, завершение которой не приведет к вставке неприемлемого элемента в множество, может вызвать исключение или завершиться успешно, по выбору реализации. Такие исключения отмечаются как «необязательные» в спецификации этого интерфейса.
Неизменяемые множества
Статические фабричные методы Set.of и Set.copyOf предоставляют удобный способ создания неизменяемых множеств. Экземпляры Set, созданные этими методами, обладают следующими характеристиками:
- Они являются неизменяемыми. Элементы не могут быть добавлены или удалены. Вызов любого метода-мутатора для множества всегда вызовет
UnsupportedOperationException. Однако, если содержащиеся элементы сами по себе изменяемы, это может привести к несогласованному поведению множества или его содержимое может показаться изменённым. - Они запрещают
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 |
Возвращает неизменяемый набор содержащий элементы заданной коллекции. |
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()
- Указано в:
-
iteratorв интерфейсеCollection<E> - Указано в:
-
iteratorв интерфейсеIterable<E> - Возвращает:
- итератор по элементам этого множества
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 работает правильно для разных реализаций интерфейса набора.- Указано в:
-
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изIteratorнабора.Spliteratorунаследует свойства fail-fast итератора набора.Созданный
Spliteratorдополнительно сообщает оSpliterator.SIZED. - Примечание к реализации:
- Созданный
Spliteratorдополнительно сообщает оSpliterator.SUBSIZED. - Возвращает:
Spliteratorпо элементам в этом наборе- С тех пор:
- 1.8
of
static <E> Set<E> of()
- Параметры типа:
-
E- тип элемента набора - Возвращает:
- пустой набор
- С тех пор:
- 9
of
static <E> Set<E> of(E e1)
- Параметры типа:
-
E- тип элемента набора - Параметры:
-
e1- единственный элемент - Возвращает:
- набор, содержащий указанный элемент
- Исключения:
-
NullPointerException- если элементnull - С тех пор:
- 9
of
static <E> Set<E> of(E e1, E e2)
- Параметры типа:
-
E- тип элемента набора - Параметры:
-
e1- первый элемент -
e2- второй элемент - Возвращает:
- набор, содержащий указанные элементы
- Исключения:
-
IllegalArgumentException- если элементы являются дубликатами -
NullPointerException- если элементnull - С тех пор:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3)
- Параметры типа:
-
E- тип элемента набора - Параметры:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент - Возвращает:
- набор, содержащий указанные элементы
- Исключения:
-
IllegalArgumentException- если существуют дублирующие элементы -
NullPointerException- если элементnull - С тех пор:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4)
- Параметры типа:
-
E- тип элемента набора - Параметры:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент - Возвращаемое значение:
- набор, содержащий указанные элементы
- Исключения:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnull - С:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5)
- Параметры типа:
-
E- тип элемента набора - Параметры:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент - Возвращаемое значение:
- набор, содержащий указанные элементы
- Исключения:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnull - С:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4, E e5, E e6)
- Параметры типа:
-
E- тип элемента набора - Параметры:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент -
e6- шестой элемент - Возвращаемое значение:
- набор, содержащий указанные элементы
- Исключения:
-
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- тип элемента набора - Параметры:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент -
e6- шестой элемент -
e7- седьмой элемент - Возвращаемое значение:
- набор, содержащий указанные элементы
- Исключения:
-
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- тип элемента набора - Параметры:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент -
e6- шестой элемент -
e7- седьмой элемент -
e8- восьмой элемент - Возвращаемое значение:
- набор, содержащий указанные элементы
- Исключения:
-
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- тип элемента набора - Параметры:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент -
e6- шестой элемент -
e7- седьмой элемент -
e8- восьмой элемент -
e9- девятый элемент - Возвращаемое значение:
- набор, содержащий указанные элементы
- Исключения:
-
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- тип элемента набора - Параметры:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент -
e4- четвёртый элемент -
e5- пятый элемент -
e6- шестой элемент -
e7- седьмой элемент -
e8- восьмой элемент -
e9- девятый элемент -
e10- десятый элемент - Возвращаемое значение:
- набор, содержащий указанные элементы
- Исключения:
-
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- тип элемента набора - Параметры:
-
elements- элементы, которые должны содержаться в наборе - Возвращаемое значение:
- набор, содержащий указанные элементы
- Исключения:
-
IllegalArgumentException- если есть какие-либо дублируемые элементы -
NullPointerException- если элемент являетсяnullили если массивnull - С:
- 9
copyOf
static <E> Set<E> copyOf(Collection<? extends E> coll)
- Примечание по реализации:
- Если заданный набор является неизменяемым набором, вызов copyOf обычно не создаёт копию.
- Параметры типа:
-
E- тип элемента набора - Параметры:
-
coll- набор, из которого берутся элементы, не должен быть null - Возвращаемое значение:
- неизменяемый набор, содержащий элементы заданного набора
- Исключения:
-
NullPointerException- если coll null или содержит null-элементы - С:
- 10
© 1993, 2023, 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/21/docs/api/java.base/java/util/Set.html