Класс AbstractSet<E>
- java.lang.Object
-
- java.util.AbstractCollection<E>
-
- java.util.AbstractSet<E>
- Параметры типа:
-
E- тип элементов, поддерживаемых этим набором
- Все реализуемые интерфейсы:
-
Iterable<E>,Collection<E>,Set<E>
- Прямые известные подклассы:
-
ConcurrentSkipListSet,CopyOnWriteArraySet,EnumSet,HashSet,TreeSet
public abstract class AbstractSet<E> extends AbstractCollection<E> implements Set<E>
Этот класс предоставляет скелетную реализацию интерфейса Set, чтобы минимизировать усилия, необходимые для реализации этого интерфейса.
Процесс реализации набора путем расширения этого класса идентичен процессу реализации коллекции путем расширения AbstractCollection, за исключением того, что все методы и конструкторы в подклассах этого класса должны подчиняться дополнительным ограничениям, накладываемым интерфейсом Set (например, метод add не должен допускать добавления нескольких экземпляров объекта в набор).
Обратите внимание, что этот класс не переопределяет ни одну из реализаций из класса AbstractCollection. Он просто добавляет реализации для equals и hashCode.
Этот класс является частью Java Collections Framework.
- С тех пор:
- 1.2
- См. также:
-
Collection,AbstractCollection,Set
Конструкторы
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
AbstractSet() |
Единственный конструктор. |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals(Object o) |
Сравнивает указанный объект с этим набором на равенство. |
int |
hashCode() |
Возвращает значение хэш-кода для этого набора. |
boolean |
removeAll(Collection<?> c) |
Удаляет из этого набора все его элементы, содержащиеся в указанной коллекции (дополнительная операция). |
Методы, объявленные в классе java.util.AbstractCollection
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, toArray, toArray, toString
Методы, объявленные в классе java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Методы, объявленные в интерфейсе java.util.Collection
parallelStream, removeIf, stream, toArray
Методы, объявленные в интерфейсе java.lang.Iterable
forEach
Методы, объявленные в интерфейсе java.util.Set
add, addAll, clear, contains, containsAll, isEmpty, iterator, remove, retainAll, size, spliterator, toArray, toArray
Конструкторы
AbstractSet
protected AbstractSet()
Единственный конструктор. (Для вызова конструкторами подклассов, как правило, неявный.)
Методы
equals
public boolean equals(Object o)
Сравнивает указанный объект с этим набором на равенство. Возвращает true, если данный объект также является набором, у двух наборов одинаковый размер, и каждый элемент данного набора содержится в этом наборе. Это гарантирует, что метод equals работает корректно в разных реализациях интерфейса Set.
Эта реализация сначала проверяет, является ли указанный объект этим набором; если да, то возвращает true. Затем проверяет, является ли указанный объект набором, размер которого идентичен размеру этого набора; если нет, то возвращает false. В противном случае возвращает containsAll((Collection) o).
- Определено в:
-
equalsв интерфейсеCollection<E> - Определено в:
-
equalsв интерфейсеSet<E> - Переопределяет:
-
equalsв классеObject - Параметры:
-
o- объект, сравниваемый на равенство с этим набором - Возвращает:
-
trueесли указанный объект равен этому набору - См. также:
-
Object.hashCode(),HashMap
hashCode
public int hashCode()
Возвращает значение хэш-кода для этого набора. Хэш-код набора определяется как сумма хэш-кодов элементов в наборе, где хэш-код элемента null равен нулю. Это гарантирует, что s1.equals(s2) подразумевает s1.hashCode()==s2.hashCode() для любых двух наборов s1 и s2, как требуется общим контрактом Object.hashCode().
Эта реализация перебирает набор, вызывая метод hashCode для каждого элемента в наборе и суммируя результаты.
- Определено в:
-
hashCodeв интерфейсеCollection<E> - Определено в:
-
hashCodeв интерфейсеSet<E> - Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение хэш-кода для этого набора
- См. также:
-
Object.equals(Object),Set.equals(Object)
removeAll
public boolean removeAll(Collection<?> c)
Удаляет из этого набора все его элементы, содержащиеся в указанной коллекции (дополнительная операция). Если указанная коллекция также является набором, эта операция эффективно изменяет этот набор таким образом, что его значение является *асимметричной разностью* двух наборов.
Эта реализация определяет, какой из набора и указанной коллекции меньше, вызывая метод size для каждого. Если у этого набора меньше элементов, то реализация перебирает этот набор, проверяя каждый элемент, возвращаемый итератором, чтобы убедиться, что он содержится в указанной коллекции. Если это так, он удаляется из этого набора с помощью метода remove итератора. Если у указанной коллекции меньше элементов, то реализация перебирает указанную коллекцию, удаляя из этого набора каждый элемент, возвращаемый итератором, с помощью метода remove этого набора.
Обратите внимание, что эта реализация выбросит UnsupportedOperationException, если итератор, возвращенный методом iterator, не реализует метод remove.
- Определено в:
-
removeAllв интерфейсеCollection<E> - Определено в:
-
removeAllв интерфейсеSet<E> - Переопределяет:
-
removeAllв классеAbstractCollection<E> - Параметры:
-
c- коллекция, содержащая элементы, которые должны быть удалены из этого набора - Возвращает:
-
trueесли этот набор изменился в результате вызова - Исключения:
-
UnsupportedOperationException- если операцияremoveAllне поддерживается этим набором -
ClassCastException- если класс элемента этого набора несовместим с указанной коллекцией (необязательно) -
NullPointerException- если этот набор содержит null-элемент, а указанная коллекция не допускает null-элементов (необязательно), или если указанная коллекция равна null - См. также:
-
AbstractCollection.remove(Object),AbstractCollection.contains(Object)
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/AbstractSet.html