Интерфейс Set<E>
- Параметры типа:
-
E- тип элементов, поддерживаемых этим множеством
- Все суперинтерфейсы:
-
Collection<E>,Iterable<E>
- Все известные дочерние интерфейсы:
-
EventSet,NavigableSet<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 предоставляют удобный способ создания неизменяемых множеств. Неизменяемые экземпляры, созданные этими методами, обладают следующими характеристиками:
- Они неизменяемы. Элементы не могут быть добавлены или удалены. Вызов любого метода-мутатора на множестве всегда приведет к тому, что будет выброшено
UnsupportedOperationException. Однако, если сами содержащиеся элементы изменяемы, это может привести к несогласованному поведению множества или к тому, что его содержимое будет казаться изменяющимся. - Они не допускают
nullэлементов. Попытки создать их сnullэлементами приводят кNullPointerException. - Они сериализуемы, если все элементы сериализуемы.
- Они отклоняют дублирующие элементы во время создания. Дублирующие элементы, переданные в фабричный метод, приводят к
IllegalArgumentException. - Порядок итерации элементов множества не определён и может изменяться.
- Они являются значение-ориентированными. Программисты должны рассматривать экземпляры, которые равны, как взаимозаменяемые и не должны использовать их для синхронизации, в противном случае может возникнуть непредсказуемое поведение. Например, в будущей версии синхронизация может завершиться неудачно. Вызывающие стороны не должны делать никаких предположений об идентичности возвращаемых экземпляров. Фабрики могут создавать новые экземпляры или повторно использовать существующие.
- Они сериализуются, как указано на странице Формы сериализации.
Этот интерфейс является членом Java Collections Framework.
- Since:
- 1.2
- См. также:
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
add |
Добавляет указанный элемент в это множество, если он ещё не присутствует (необязательная операция). |
boolean |
addAll |
Добавляет все элементы из указанной коллекции в это множество, если они ещё не присутствуют (необязательная операция). |
void |
clear() |
Удаляет все элементы из этого множества (необязательная операция). |
boolean |
contains |
Возвращает true, если это множество содержит указанный элемент. |
boolean |
containsAll |
Возвращает true, если это множество содержит все элементы указанной коллекции. |
static <E> Set<E> |
copyOf |
Возвращает неизменяемое множество, содержащее элементы заданной коллекции. |
boolean |
equals |
Сравнивает указанный объект с этим множеством на предмет равенства. |
int |
hashCode() |
Возвращает хэш-код для этого множества. |
boolean |
isEmpty() |
Возвращает true, если это множество не содержит элементов. |
Iterator<E> |
iterator() |
Возвращает итератор по элементам в этом множестве. |
static <E> Set<E> |
of() |
Возвращает неизменяемое множество, содержащее ноль элементов. |
static <E> Set<E> |
of |
Возвращает неизменяемое множество, содержащее один элемент. |
static <E> Set<E> |
of |
Возвращает неизменяемое множество, содержащее произвольное количество элементов. |
static <E> Set<E> |
of |
Возвращает неизменяемое множество, содержащее два элемента. |
static <E> Set<E> |
of |
Возвращает неизменяемое множество, содержащее три элемента. |
static <E> Set<E> |
of |
Возвращает неизменяемое множество, содержащее четыре элемента. |
static <E> Set<E> |
of |
Возвращает неизменяемое множество, содержащее пять элементов. |
static <E> Set<E> |
of |
Возвращает неизменяемое множество, содержащее шесть элементов. |
static <E> Set<E> |
of |
Возвращает неизменяемое множество, содержащее семь элементов. |
static <E> Set<E> |
of |
Возвращает неизменяемое множество, содержащее восемь элементов. |
static <E> Set<E> |
of |
Возвращает неизменяемое множество, содержащее девять элементов. |
static <E> Set<E> |
of |
Возвращает неизменяемое множество, содержащее десять элементов. |
boolean |
remove |
Удаляет указанный элемент из этого множества, если он присутствует (необязательная операция). |
boolean |
removeAll |
Удаляет из этого множества все его элементы, содержащиеся в указанной коллекции (необязательная операция). |
boolean |
retainAll |
Сохраняет только элементы в этом множестве, которые содержатся в указанной коллекции (необязательная операция). |
int |
size() |
Возвращает количество элементов в этом множестве (его мощность). |
default Spliterator<E> |
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[] 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 - См. также:
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> - Требования к реализации:
- По умолчанию реализация создает late-binding 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- единственный элемент - Возвращает:
- множество, содержащее указанный элемент
- Исключения:
-
NullPointerException- если элементnull - С:
- 9
of
static <E> Set<E> of(E e1, E e2)
- Параметры типа:
-
E- тип элементаSet - Параметры:
-
e1- первый элемент -
e2- второй элемент - Возвращает:
- множество, содержащее указанные элементы
- Исключения:
-
IllegalArgumentException- если элементы являются дубликатами -
NullPointerException- если элементnull - С:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3)
- Параметры типа:
-
E- тип элементаSet - Параметры:
-
e1- первый элемент -
e2- второй элемент -
e3- третий элемент - Возвращает:
- множество, содержащее указанные элементы
- Исключения:
-
IllegalArgumentException- если есть дублируемые элементы -
NullPointerException- если элементnull - С:
- 9
of
static <E> Set<E> of(E e1, E e2, E e3, E e4)
- Параметры типа:
-
E- тип элементаSet - Параметры:
-
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- тип элементаSet - Параметры:
-
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)
- Примечание реализации:
- Если заданный Collection является неизменяемым множеством, вызов copyOf, как правило, не создаст копию.
- Параметры типа:
-
E- тип элементов множества - Параметры:
-
coll- Collection, из которого берутся элементы, не должен быть null - Возвращает:
- множество, содержащее элементы данного Collection
- Исключения:
-
NullPointerException- если coll является null или содержит null-элементы - С:
- 10
© 1993, 2021, 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/17/docs/api/java.base/java/util/Set.html