Интерфейс Set<E>
- Параметры типа:
-
E- тип элементов, поддерживаемых этим набором
- Все суперинтерфейсы:
- Collection<E>, Iterable<E>
- Все известные дочерние интерфейсы:
- 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; некоторые реализации будут проявлять первое поведение, а некоторые - второе. В общем случае, попытка операции с неприемлемым элементом, завершение которой не приведет к вставке неприемлемого элемента в набор, может вызвать исключение или завершиться успешно, по выбору реализации. Такие исключения помечены как «необязательные» в спецификации для этого интерфейса.
Этот интерфейс является членом Java Collections Framework.
- С момента:
- 1.2
- См. также:
-
Collection,List,SortedSet,HashSet,TreeSet,AbstractSet,Collections.singleton(java.lang.Object),Collections.EMPTY_SET
Методы
| Модификатор и тип | Метод и описание |
|---|---|
boolean |
add(E e) Добавляет указанный элемент в этот набор, если он еще не присутствует (необязательная операция). |
boolean |
addAll(Collection<? extends E> c) Добавляет все элементы из указанной коллекции в этот набор, если они еще не присутствуют (необязательная операция). |
void |
clear() Удаляет все элементы из этого набора (необязательная операция). |
boolean |
contains(Object o) Возвращает |
boolean |
containsAll(Collection<?> c) Возвращает |
boolean |
equals(Object o) Сравнивает указанный объект с этим набором на равенство. |
int |
hashCode() Возвращает значение хэш-кода для этого набора. |
boolean |
isEmpty() Возвращает |
Iterator<E> |
iterator() Возвращает итератор по элементам в этом наборе. |
boolean |
remove(Object o) Удаляет указанный элемент из этого набора, если он присутствует (необязательная операция). |
boolean |
removeAll(Collection<?> c) Удаляет из этого набора все его элементы, которые содержатся в указанной коллекции (необязательная операция). |
boolean |
retainAll(Collection<?> c) Оставляет только элементы в этом наборе, которые содержатся в указанной коллекции (необязательная операция). |
int |
size() Возвращает количество элементов в этом наборе (его мощность). |
default Spliterator<E> |
spliterator() Создаёт |
Object[] |
toArray() Возвращает массив, содержащий все элементы в этом наборе. |
<T> T[] |
toArray(T[] a) Возвращает массив, содержащий все элементы в этом наборе; тип времени выполнения возвращаемого массива соответствует указанному массиву. |
Методы, унаследованные от интерфейса java.util.Collection
parallelStream, removeIf, stream Методы, унаследованные от интерфейса java.lang.Iterable
forEach Методы
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 такой, что (o==null ? e==null : o.equals(e)).
- Указано в:
-
containsв интерфейсеCollection<E> - Параметры:
-
o- элемент, присутствие которого в этом наборе необходимо проверить - Возвращает:
-
trueесли этот набор содержит указанный элемент - Исключения:
-
ClassCastException- если тип указанного элемента несовместим с этим набором (необязательно) -
NullPointerException- если указанный элемент имеет значение null, а этот набор не допускает null-элементы (необязательно)
iterator
Iterator<E> iterator()
Возвращает итератор по элементам в этом наборе. Элементы возвращаются в произвольном порядке (если этот набор не является экземпляром класса, предоставляющего гарантию).
- Указано в:
-
iteratorв интерфейсеCollection<E> - Указано в:
-
iteratorв интерфейсеIterable<E> - Возвращает:
- итератор по элементам в этом наборе
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 такой, что (e==null ? e2==null : e.equals(e2)). Если этот набор уже содержит элемент, вызов оставляет набор без изменений и возвращает false. В сочетании с ограничением на конструкторы это гарантирует, что наборы никогда не содержат дублирующих элементов.
Вышеупомянутое ограничение не подразумевает, что наборы должны принимать все элементы; наборы могут отказаться от добавления любого конкретного элемента, включая null, и выбросить исключение, как описано в спецификации для Collection.add. Отдельные реализации наборов должны чётко документировать любые ограничения на элементы, которые они могут содержать.
- Указано в:
-
addв интерфейсеCollection<E> - Параметры:
-
e- элемент, который нужно добавить в этот набор - Возвращает:
-
trueесли этот набор ещё не содержал указанного элемента - Исключения:
-
UnsupportedOperationException- если операцияaddне поддерживается этим набором -
ClassCastException- если класс указанного элемента не позволяет добавить его в этот набор -
NullPointerException- если указанный элемент имеет значение null, а этот набор не допускает null-элементы -
IllegalArgumentException- если какое-либо свойство указанного элемента не позволяет добавить его в этот набор
remove
boolean remove(Object o)
Удаляет указанный элемент из этого набора, если он присутствует (необязательная операция). Более формально, удаляет элемент e такой, что (o==null ? e==null : o.equals(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 - См. также:
contains(Object)
addAll
boolean addAll(Collection<? extends E> c)
Добавляет все элементы в указанной коллекции в этот набор, если они ещё не присутствуют (необязательная операция). Если указанная коллекция также является набором, операция addAll фактически изменяет этот набор так, что его значением является *объединение* двух наборов. Поведение этой операции не определено, если указанная коллекция изменяется во время выполнения операции.
- Указано в:
-
addAllв интерфейсеCollection<E> - Параметры:
-
c- коллекция, содержащая элементы, которые нужно добавить в этот набор - Возвращает:
-
trueесли этот набор изменился в результате вызова - Исключения:
-
UnsupportedOperationException- если операцияaddAllне поддерживается этим набором -
ClassCastException- если класс элемента указанной коллекции не позволяет добавить его в этот набор -
NullPointerException- если указанная коллекция содержит один или несколько null-элементов, а этот набор не допускает null-элементы, или если указанная коллекция имеет значение null -
IllegalArgumentException- если какое-либо свойство элемента указанной коллекции не позволяет добавить его в этот набор - См. также:
add(Object)
retainAll
boolean retainAll(Collection<?> c)
Оставляет только элементы в этом наборе, которые содержатся в указанной коллекции (необязательная операция). Другими словами, удаляет из этого набора все его элементы, которые не содержатся в указанной коллекции. Если указанная коллекция также является набором, эта операция фактически изменяет этот набор так, что его значением является *пересечение* двух наборов.
- Определено в:
-
retainAllв интерфейсеCollection<E> - Параметры:
-
c- коллекция, содержащая элементы, которые должны быть сохранены в этом множестве - Возвращает:
-
trueесли это множество изменилось в результате вызова - Выбрасывает:
-
UnsupportedOperationException- если операцияretainAllне поддерживается этим множеством -
ClassCastException- если класс элемента этого множества несовместим с заданной коллекцией (необязательно) -
NullPointerException- если это множество содержит нулевой элемент, а заданная коллекция не допускает нулевых элементов (необязательно), или если заданная коллекция равна null - См. также:
remove(Object)
removeAll
boolean removeAll(Collection<?> c)
Удаляет из этого множества все его элементы, которые содержатся в заданной коллекции (необязательная операция). Если заданная коллекция также является множеством, эта операция фактически изменяет это множество таким образом, что его значение является симметричной разностью двух множеств.
- Определено в:
-
removeAllв интерфейсеCollection<E> - Параметры:
-
c- коллекция, содержащая элементы, которые должны быть удалены из этого множества - Возвращает:
-
trueесли это множество изменилось в результате вызова - Выбрасывает:
-
UnsupportedOperationException- если операцияremoveAllне поддерживается этим множеством -
ClassCastException- если класс элемента этого множества несовместим с заданной коллекцией (необязательно) -
NullPointerException- если это множество содержит нулевой элемент, а заданная коллекция не допускает нулевых элементов (необязательно), или если заданная коллекция равна null - См. также:
-
remove(Object),contains(Object)
clear
void clear()
Удаляет все элементы из этого множества (необязательная операция). Множество будет пустым после возвращения этого вызова.
- Определено в:
-
clearв интерфейсеCollection<E> - Выбрасывает:
-
UnsupportedOperationException- если методclearне поддерживается этим множеством
equals
boolean equals(Object o)
Сравнивает указанный объект с этим множеством на равенство. Возвращает true если указанный объект также является множеством, у двух множеств одинаковый размер, и каждый член указанного множества содержится в этом множестве (или, что эквивалентно, каждый член этого множества содержится в указанном множестве). Это определение гарантирует, что метод equals работает правильно в разных реализациях интерфейса множества.
- Определено в:
-
equalsв интерфейсеCollection<E> - Переопределяет:
-
equalsв классеObject - Параметры:
-
o- объект, который должен быть сравнен на равенство с этим множеством - Возвращает:
-
trueесли указанный объект равен этому множеству - См. также:
-
Object.hashCode(),HashMap
hashCode
int hashCode()
Возвращает значение хэш-кода для этого множества. Хэш-код множества определяется как сумма хэш-кодов элементов в множестве, где хэш-код элемента null определяется как ноль. Это гарантирует, что s1.equals(s2) подразумевает, что s1.hashCode()==s2.hashCode() для любых двух множеств s1 и s2, как требуется общим контрактом Object.hashCode().
- Определено в:
-
hashCodeв интерфейсеCollection<E> - Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение хэш-кода для этого множества
- См. также:
-
Object.equals(Object),equals(Object)
spliterator
default Spliterator<E> spliterator()
Создает итератор по элементам в этом множестве.
Итератор Spliterator сообщает о Spliterator.DISTINCT. Реализации должны документировать отчёт о дополнительных характеристиках.
- Определено в:
-
spliteratorв интерфейсеCollection<E> - Определено в:
-
spliteratorв интерфейсеIterable<E> - Требования к реализации:
- Стандартная реализация создает итератор поздней привязки из
Iteratorмножества. Итератор наследует свойства быстрого отказа итератора множества.Созданный итератор
Spliteratorдополнительно сообщает оSpliterator.SIZED. - Примечание к реализации:
- Созданный итератор
Spliteratorдополнительно сообщает оSpliterator.SUBSIZED. - Возвращает:
- итератор по элементам в этом множестве
- С:
- 1.8
© 1993, 2020, 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.