Класс AbstractCollection<E>
- java.lang.Object
-
- java.util.AbstractCollection<E>
- Все реализованные интерфейсы:
- Iterable<E>, Collection<E>
- Непосредственные известные подклассы:
- AbstractList, AbstractQueue, AbstractSet, ArrayDeque, ConcurrentLinkedDeque
public abstract class AbstractCollection<E> extends Object implements Collection<E>
Этот класс предоставляет скелетную реализацию интерфейса Collection, чтобы минимизировать усилия, необходимые для реализации этого интерфейса.
Для реализации неизменяемого набора программисту необходимо только расширить этот класс и предоставить реализации методов iterator и size. (Итератор, возвращаемый методом iterator, должен реализовывать методы hasNext и next.)
Для реализации изменяемого набора программист должен дополнительно переопределить метод add этого класса (который в противном случае генерирует исключение UnsupportedOperationException), а итератор, возвращаемый методом iterator, должен дополнительно реализовывать свой метод remove.
Программисту обычно следует предоставить конструктор без аргументов (пустой) и Collection конструктор, в соответствии с рекомендациями в спецификации интерфейса Collection.
Документация для каждого неабстрактного метода в этом классе подробно описывает его реализацию. Каждый из этих методов может быть переопределен, если реализуемый набор допускает более эффективную реализацию.
Этот класс является членом Java Collections Framework.
- С:
- 1.2
- См. также:
Collection
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
AbstractCollection() Единственный конструктор. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
boolean |
add(E e) Обеспечивает, что этот набор содержит указанный элемент (необязательная операция). |
boolean |
addAll(Collection<? extends E> c) Добавляет все элементы из указанного набора в этот набор (необязательная операция). |
void |
clear() Удаляет все элементы из этого набора (необязательная операция). |
boolean |
contains(Object o) Возвращает |
boolean |
containsAll(Collection<?> c) Возвращает |
boolean |
isEmpty() Возвращает |
abstract Iterator<E> |
iterator() Возвращает итератор по элементам, содержащимся в этом наборе. |
boolean |
remove(Object o) Удаляет единственный экземпляр указанного элемента из этого набора, если он присутствует (необязательная операция). |
boolean |
removeAll(Collection<?> c) Удаляет все элементы этого набора, которые также содержатся в указанном наборе (необязательная операция). |
boolean |
retainAll(Collection<?> c) Сохраняет только элементы в этом наборе, которые содержатся в указанном наборе (необязательная операция). |
abstract int |
size() Возвращает количество элементов в этом наборе. |
Object[] |
toArray() Возвращает массив, содержащий все элементы в этом наборе. |
<T> T[] |
toArray(T[] a) Возвращает массив, содержащий все элементы в этом наборе; тип времени выполнения возвращаемого массива соответствует типу указанного массива. |
String |
toString() Возвращает строковое представление этого набора. |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait Методы, унаследованные от интерфейса java.util.Collection
equals, hashCode, parallelStream, removeIf, spliterator, stream Методы, унаследованные от интерфейса java.lang.Iterable
forEach Конструкторы
AbstractCollection
protected AbstractCollection()
Единственный конструктор. (Для вызова подклассами конструкторов, как правило, неявный).
Методы
iterator
public abstract Iterator<E> iterator()
Возвращает итератор по элементам, содержащимся в этой коллекции.
- Определено в:
-
iteratorв интерфейсеIterable<E> - Определено в:
-
iteratorв интерфейсеCollection<E> - Возвращает:
- итератор по элементам, содержащимся в этой коллекции
size
public abstract int size()
Описание скопировано из интерфейса: Collection
Возвращает количество элементов в этой коллекции. Если эта коллекция содержит более Integer.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.
- Определено в:
-
sizeв интерфейсеCollection<E> - Возвращает:
- количество элементов в этой коллекции
isEmpty
public boolean isEmpty()
Возвращает true, если эта коллекция не содержит элементов.
Это реализация возвращает size() == 0.
- Определено в:
-
isEmptyв интерфейсеCollection<E> - Возвращает:
-
trueесли эта коллекция не содержит элементов
contains
public boolean contains(Object o)
Возвращает true если эта коллекция содержит указанный элемент. Более формально, возвращает true тогда и только тогда, когда эта коллекция содержит по крайней мере один элемент e такой, что (o==null ? e==null : o.equals(e)).
Эта реализация итерируется по элементам в коллекции, проверяя каждый элемент по очереди на равенство с указанным элементом.
- Определено в:
-
containsв интерфейсеCollection<E> - Параметры:
-
o- элемент, присутствие которого в этой коллекции нужно проверить - Возвращает:
-
trueесли эта коллекция содержит указанный элемент - Исключения:
-
ClassCastException- если тип указанного элемента несовместим с этой коллекцией (необязательно) -
NullPointerException- если указанный элемент равен null, а эта коллекция не допускает null-элементов (необязательно)
toArray
public Object[] toArray()
Возвращает массив, содержащий все элементы в этой коллекции. Если эта коллекция гарантирует порядок возврата своих элементов итератором, этот метод должен вернуть элементы в том же порядке.
Возвращаемый массив будет «безопасным», поскольку к нему не сохраняются ссылки этой коллекции. (Другими словами, этот метод должен выделять новый массив, даже если эта коллекция поддерживается массивом). Вызывающая сторона, таким образом, свободна изменять возвращаемый массив.
Этот метод служит мостом между основанными на массиве и на основе коллекций API.
Эта реализация возвращает массив, содержащий все элементы, возвращенные итератором этой коллекции, в том же порядке, хранящиеся в последовательных элементах массива, начиная с индекса 0. Длина возвращаемого массива равна количеству элементов, возвращенных итератором, даже если размер этой коллекции изменяется во время итерации, как может произойти, если коллекция допускает одновременное изменение во время итерации. Метод size вызывается только как подсказка оптимизации; правильный результат возвращается даже если итератор возвращает другое количество элементов.
Этот метод эквивалентен:
List<E> list = new ArrayList<E>(size());
for (E e : this)
list.add(e);
return list.toArray();
- Определено в:
-
toArrayв интерфейсеCollection<E> - Возвращает:
- массив, содержащий все элементы в этой коллекции
toArray
public <T> T[] toArray(T[] a)
Возвращает массив, содержащий все элементы в этой коллекции; тип выполнения возвращаемого массива — указанного массива. Если коллекция помещается в указанный массив, она возвращается в нем. В противном случае, выделяется новый массив с типом выполнения указанного массива и размером этой коллекции.
Если эта коллекция помещается в указанный массив с избыточным местом (т. е. массив имеет больше элементов, чем эта коллекция), элемент в массиве сразу после конца коллекции устанавливается в null. (Это полезно для определения длины этой коллекции *только* если вызывающая сторона знает, что эта коллекция не содержит каких-либо null элементов.)
Если эта коллекция гарантирует порядок возврата своих элементов итератором, этот метод должен вернуть элементы в том же порядке.
Как и метод Collection.toArray(), этот метод служит мостом между основанными на массиве и основанными на коллекции API. Кроме того, этот метод позволяет точно контролировать тип выполнения выходного массива и, при определенных обстоятельствах, может использоваться для экономии затрат на выделение памяти.
Предположим, что x — это коллекция, известная тем, что содержит только строки. Следующий код может использоваться для выгрузки коллекции в новый выделенный массив String:
String[] y = x.toArray(new String[0]);Обратите внимание, что
toArray(new Object[0]) идентичен по функции toArray(). Эта реализация возвращает массив, содержащий все элементы, возвращенные итератором этой коллекции в том же порядке, хранящиеся в последовательных элементах массива, начиная с индекса 0. Если количество элементов, возвращенных итератором, слишком велико для размещения в указанном массиве, элементы возвращаются в новом выделенном массиве с длиной, равной количеству элементов, возвращенных итератором, даже если размер этой коллекции изменяется во время итерации, как может произойти, если коллекция допускает одновременное изменение во время итерации. Метод size вызывается только как подсказка оптимизации; правильный результат возвращается даже если итератор возвращает другое количество элементов.
Этот метод эквивалентен:
List<E> list = new ArrayList<E>(size());
for (E e : this)
list.add(e);
return list.toArray(a);
- Определено в:
-
toArrayв интерфейсеCollection<E> - Параметры типа:
-
T- тип выполнения массива для хранения коллекции - Параметры:
-
a- массив, в который должны быть помещены элементы этой коллекции, если он достаточно большой; в противном случае, для этой цели выделяется новый массив того же типа выполнения. - Возвращает:
- массив, содержащий все элементы в этой коллекции
- Исключения:
-
ArrayStoreException- если тип выполнения указанного массива не является надтипом типа выполнения каждого элемента в этой коллекции -
NullPointerException- если указанный массив равен null
add
public boolean add(E e)
Обеспечивает, что эта коллекция содержит указанный элемент (необязательная операция). Возвращает true если эта коллекция изменилась в результате вызова. (Возвращает false если эта коллекция не допускает дубликатов и уже содержит указанный элемент.)
Коллекции, поддерживающие эту операцию, могут накладывать ограничения на добавляемые элементы. В частности, некоторые коллекции будут отказываться добавлять null элементы, а другие наложат ограничения на тип добавляемых элементов. Классы коллекций должны четко указывать в своей документации любые ограничения на добавляемые элементы.
Если коллекция отказывается добавить определенный элемент по любой причине, кроме уже содержащегося элемента, она *должна* выбросить исключение (а не вернуть false). Это сохраняет инвариант, что коллекция всегда содержит указанный элемент после возврата этого вызова.
Эта реализация всегда выбрасывает UnsupportedOperationException.
- Определено в:
-
addв интерфейсеCollection<E> - Параметры:
-
e- элемент, присутствие которого в этой коллекции должно быть гарантировано - Возвращает:
-
trueесли эта коллекция изменилась в результате вызова - Исключения:
-
UnsupportedOperationException- если операцияaddне поддерживается этой коллекцией -
ClassCastException- если класс указанного элемента препятствует его добавлению в эту коллекцию -
NullPointerException- если указанный элемент равен null, а эта коллекция не допускает null-элементов -
IllegalArgumentException- если какое-либо свойство элемента препятствует его добавлению в эту коллекцию -
IllegalStateException- если элемент не может быть добавлен в данный момент из-за ограничений на вставку
remove
public boolean remove(Object o)
Удаляет единственный экземпляр указанного элемента из этой коллекции, если он присутствует (необязательная операция). Более формально, удаляет элемент e такой, что (o==null ? e==null : o.equals(e)), если эта коллекция содержит один или несколько таких элементов. Возвращает true если эта коллекция содержала указанный элемент (или, что эквивалентно, если эта коллекция изменилась в результате вызова).
Эта реализация итерируется по коллекции в поисках указанного элемента. Если элемент найден, он удаляется из коллекции с помощью метода remove итератора.
Обратите внимание, что эта реализация выбрасывает UnsupportedOperationException если итератор, возвращенный методом iterator этой коллекции, не реализует метод remove и эта коллекция содержит указанный объект.
- Определено в:
-
removeв интерфейсеCollection<E> - Параметры:
-
o- элемент, подлежащий удалению из этой коллекции, если он присутствует - Возвращает:
-
trueесли элемент был удален в результате этого вызова - Исключения:
-
UnsupportedOperationException- если операцияremoveне поддерживается этой коллекцией -
ClassCastException- если тип указанного элемента несовместим с этой коллекцией (необязательно) -
NullPointerException- если указанный элемент равен null, а эта коллекция не допускает null-элементов (необязательно)
containsAll
public boolean containsAll(Collection<?> c)
Возвращает true если эта коллекция содержит все элементы в указанной коллекции.
Эта реализация итерируется по указанной коллекции, проверяя каждый элемент, возвращенный итератором по очереди, чтобы увидеть, содержится ли он в этой коллекции. Если все элементы так содержатся, возвращается true, в противном случае false.
- Указано в:
-
containsAllв интерфейсеCollection<E> - Параметры:
-
c- коллекция, которая должна проверяться на вхождение в эту коллекцию - Возвращает:
-
trueесли эта коллекция содержит все элементы в указанной коллекции - Выбрасывает:
-
ClassCastException- если типы одного или нескольких элементов в указанной коллекции несовместимы с этой коллекцией (необязательно) -
NullPointerException- если указанная коллекция содержит один или несколько нулевых элементов, а эта коллекция не допускает нулевые элементы (необязательно), или если указанная коллекция равна null. - См. также:
contains(Object)
addAll
public boolean addAll(Collection<? extends E> c)
Добавляет все элементы из указанной коллекции в эту коллекцию (необязательная операция). Поведение этой операции не определено, если указанная коллекция изменяется во время выполнения операции. (Это подразумевает, что поведение этого вызова не определено, если указанная коллекция является этой коллекцией, и эта коллекция не пуста.)
Эта реализация итерируется по указанной коллекции и добавляет каждый объект, возвращаемый итератором, в эту коллекцию по очереди.
Обратите внимание, что эта реализация выбросит UnsupportedOperationException, если add не переопределён (предполагается, что указанная коллекция не пуста).
- Указано в:
-
addAllв интерфейсеCollection<E> - Параметры:
-
c- коллекция, содержащая элементы, которые нужно добавить в эту коллекцию - Возвращает:
-
trueесли эта коллекция изменилась в результате вызова - Выбрасывает:
-
UnsupportedOperationException- если операцияaddAllне поддерживается этой коллекцией -
ClassCastException- если класс элемента указанной коллекции не позволяет добавить его в эту коллекцию -
NullPointerException- если указанная коллекция содержит нулевой элемент, а эта коллекция не допускает нулевых элементов, или если указанная коллекция равна null -
IllegalArgumentException- если какое-либо свойство элемента указанной коллекции препятствует его добавлению в эту коллекцию -
IllegalStateException- если не все элементы могут быть добавлены в данный момент из-за ограничений вставки - См. также:
add(Object)
removeAll
public boolean removeAll(Collection<?> c)
Удаляет все элементы этой коллекции, которые также содержатся в указанной коллекции (необязательная операция). После возврата этого вызова эта коллекция не будет содержать общих элементов с указанной коллекцией.
Эта реализация итерируется по этой коллекции, проверяя каждый возвращаемый итератором элемент по очереди, чтобы определить, содержится ли он в указанной коллекции. Если он содержится, он удаляется из этой коллекции с помощью метода remove итератора.
Обратите внимание, что эта реализация выбросит UnsupportedOperationException, если итератор, возвращаемый методом iterator, не реализует метод remove и эта коллекция содержит один или несколько общих элементов с указанной коллекцией.
- Указано в:
-
removeAllв интерфейсеCollection<E> - Параметры:
-
c- коллекция, содержащая элементы, которые нужно удалить из этой коллекции - Возвращает:
-
trueесли эта коллекция изменилась в результате вызова - Выбрасывает:
-
UnsupportedOperationException- если методremoveAllне поддерживается этой коллекцией -
ClassCastException- если типы одного или нескольких элементов этой коллекции несовместимы с указанной коллекцией (необязательно) -
NullPointerException- если эта коллекция содержит один или несколько нулевых элементов, а указанная коллекция не поддерживает нулевые элементы (необязательно), или если указанная коллекция равна null - См. также:
-
remove(Object),contains(Object)
retainAll
public boolean retainAll(Collection<?> c)
Сохраняет только элементы в этой коллекции, которые содержатся в указанной коллекции (необязательная операция). Другими словами, удаляет из этой коллекции все её элементы, которые не содержатся в указанной коллекции.
Эта реализация итерируется по этой коллекции, проверяя каждый возвращаемый итератором элемент по очереди, чтобы определить, содержится ли он в указанной коллекции. Если он не содержится, он удаляется из этой коллекции с помощью метода remove итератора.
Обратите внимание, что эта реализация выбросит UnsupportedOperationException, если итератор, возвращаемый методом iterator, не реализует метод remove и эта коллекция содержит один или несколько элементов, отсутствующих в указанной коллекции.
- Указано в:
-
retainAllв интерфейсеCollection<E> - Параметры:
-
c- коллекция, содержащая элементы, которые нужно сохранить в этой коллекции - Возвращает:
-
trueесли эта коллекция изменилась в результате вызова - Выбрасывает:
-
UnsupportedOperationException- если операцияretainAllне поддерживается этой коллекцией -
ClassCastException- если типы одного или нескольких элементов этой коллекции несовместимы с указанной коллекцией (необязательно) -
NullPointerException- если эта коллекция содержит один или несколько нулевых элементов, а указанная коллекция не допускает нулевых элементов (необязательно), или если указанная коллекция равна null - См. также:
-
remove(Object),contains(Object)
clear
public void clear()
Удаляет все элементы из этой коллекции (необязательная операция). Коллекция будет пустой после возврата этого метода.
Эта реализация итерируется по этой коллекции, удаляя каждый элемент с помощью операции Iterator.remove. Большинство реализаций, вероятно, выберут переопределение этого метода для повышения эффективности.
Обратите внимание, что эта реализация выбросит UnsupportedOperationException, если итератор, возвращаемый методом iterator этой коллекции, не реализует метод remove и эта коллекция не пуста.
- Указано в:
-
clearв интерфейсеCollection<E> - Выбрасывает:
-
UnsupportedOperationException- если операцияclearне поддерживается этой коллекцией
toString
public String toString()
Возвращает строковое представление этой коллекции. Строковое представление состоит из списка элементов коллекции в порядке их возвращения итератором, заключённых в квадратные скобки ("[]"). Смежные элементы разделяются символами ", " (запятая и пробел). Элементы преобразуются в строки с помощью String.valueOf(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.