Spec-Zone.ru › OpenJDK 17

Интерфейс Collection<E>

Параметры типа:
E - тип элементов в этой коллекции
Все суперинтерфейсы:
Iterable<E>
Все известные подинтерфейсы:
BeanContext, BeanContextServices, BlockingDeque<E>, BlockingQueue<E>, Deque<E>, EventSet, List<E>, NavigableSet<E>, Queue<E>, Set<E>, SortedSet<E>, TransferQueue<E>
Все известные реализующие классы:
AbstractCollection, AbstractList, AbstractQueue, AbstractSequentialList, AbstractSet, ArrayBlockingQueue, ArrayDeque, ArrayList, AttributeList, BeanContextServicesSupport, BeanContextSupport, ConcurrentHashMap.KeySetView, ConcurrentLinkedDeque, ConcurrentLinkedQueue, ConcurrentSkipListSet, CopyOnWriteArrayList, CopyOnWriteArraySet, DelayQueue, EnumSet, HashSet, JobStateReasons, LinkedBlockingDeque, LinkedBlockingQueue, LinkedHashSet, LinkedList, LinkedTransferQueue, PriorityBlockingQueue, PriorityQueue, RoleList, RoleUnresolvedList, Stack, SynchronousQueue, TreeSet, Vector
public interface Collection<E> extends Iterable<E>
Корневой интерфейс в иерархии коллекций. Коллекция представляет собой группу объектов, известных как её элементы. Некоторые коллекции допускают дублирование элементов, а другие — нет. Некоторые упорядочены, а другие — неупорядочены. JDK не предоставляет никаких прямых реализаций этого интерфейса: он предоставляет реализации более конкретных подинтерфейсов, таких как Set и List. Этот интерфейс обычно используется для передачи коллекций и работы с ними, где желательно максимальное обобщение.

Множества или мультимножества (неупорядоченные коллекции, которые могут содержать дублируемые элементы) должны реализовывать этот интерфейс напрямую.

Все универсальные Collection реализации классов (которые обычно реализуют Collection косвенно через один из его подинтерфейсов) должны предоставлять два «стандартных» конструктора: конструктор без аргументов, который создаёт пустую коллекцию, и конструктор с одним аргументом типа Collection, который создаёт новую коллекцию с теми же элементами, что и её аргумент. По сути, последний конструктор позволяет пользователю копировать любую коллекцию, создавая эквивалентную коллекцию нужного типа реализации. Нет способа заставить соблюдать эту конвенцию (так как интерфейсы не могут содержать конструкторы), но все универсальные Collection реализации в библиотеках Java платформы этому следуют.

Некоторые методы определены как необязательные. Если реализация коллекции не реализует определённую операцию, она должна определить соответствующий метод, который будет выбрасывать UnsupportedOperationException. Такие методы помечены как «необязательные операции» в спецификациях методов интерфейсов коллекций.

Некоторые реализации коллекций имеют ограничения на элементы, которые они могут содержать. Например, некоторые реализации запрещают нулевые элементы, а некоторые имеют ограничения на типы элементов. Попытка добавить неприемлемый элемент вызывает исключение, не требующее проверки, обычно NullPointerException или ClassCastException. Попытка запросить наличие неприемлемого элемента может вызвать исключение или просто вернуть false; некоторые реализации будут демонстрировать первое поведение, а некоторые — второе. Более обще, попытка операции над неприемлемым элементом, завершение которой не приведет к вставке неприемлемого элемента в коллекцию, может вызвать исключение или завершиться успешно, по выбору реализации. Такие исключения помечены как «необязательные» в спецификации этого интерфейса.

Каждая коллекция определяет свою политику синхронизации. При отсутствии более сильной гарантии реализацией, вызов любого метода на коллекции, изменяемой другой нитью, может привести к неопределённому поведению; это включает прямые вызовы, передачу коллекции методу, который может выполнить вызовы, и использование существующего итератора для просмотра коллекции.

Многие методы в интерфейсах Collections Framework определены с точки зрения метода equals. Например, спецификация метода contains(Object o) гласит: «Возвращает true, если и только если эта коллекция содержит по крайней мере один элемент e, такой что (o==null ? e==null : o.equals(e))». Эта спецификация не должна интерпретироваться как подразумевающая, что вызов Collection.contains с ненулевым аргументом o вызовет o.equals(e) для любого элемента e. Реализации могут свободно реализовывать оптимизации, исключая вызов equals , например, предварительно сравнивая коды хеширования двух элементов. (Спецификация Object.hashCode() гарантирует, что два объекта с несовпадающими кодами хеширования не могут быть равны.) Более общо, реализации различных интерфейсов Collections Framework могут свободно использовать указанное поведение методов Object внизу, где реализующий посчитает это уместным.

Некоторые операции с коллекциями, выполняющие рекурсивный обход коллекции, могут завершиться исключением для самоссылочных экземпляров, где коллекция прямо или косвенно содержит себя. Это включает методы clone(), equals(), hashCode() и toString(). Реализации могут по своему усмотрению обрабатывать самоссылочную ситуацию, однако большинство текущих реализаций этого не делают.

Коллекции-представления

Большинство коллекций управляют хранилищем для элементов, которые они содержат. В отличие от этого, коллекции-представления сами не хранят элементы, а вместо этого опираются на базовую коллекцию для хранения фактических элементов. Операции, которые не обрабатываются самой коллекцией-представлением, делегируются базовой коллекции. Примеры коллекций-представлений включают обернутые коллекции, возвращаемые методами, такими как Collections.checkedCollection, Collections.synchronizedCollection и Collections.unmodifiableCollection. Другие примеры коллекций-представлений включают коллекции, которые предоставляют другое представление тех же элементов, например, предоставляемые List.subList, NavigableSet.subSet или Map.entrySet. Любые изменения, внесенные в базовую коллекцию, видны в коллекции-представлении. Соответственно, любые изменения, внесенные в коллекцию-представление — если изменения разрешены — записываются в базовую коллекцию. Хотя они технически не являются коллекциями, экземпляры Iterator и ListIterator также могут позволять запись изменений в базовую коллекцию, и в некоторых случаях изменения в базовой коллекции будут видны итератору во время итерации.

Неизменяемые коллекции

Некоторые методы этого интерфейса считаются «разрушительными» и называются «мутаторными» методами, поскольку они изменяют группу объектов, содержащихся в коллекции, над которой они действуют. Они могут быть определены так, чтобы выбрасывать UnsupportedOperationException если реализация этой коллекции не поддерживает операцию. Такие методы должны (но не обязаны) выбрасывать UnsupportedOperationException если вызов не повлияет на коллекцию. Например, рассмотрим коллекцию, которая не поддерживает операцию add. Что произойдёт, если метод addAll вызывается на этой коллекции с пустой коллекцией в качестве аргумента? Добавление нуля элементов не имеет эффекта, поэтому разрешается, чтобы эта коллекция просто ничего не делала и не выбрасывала исключение. Однако рекомендуется, чтобы в таких случаях исключение выбрасывалось безоговорочно, так как выбрасывание только в определённых случаях может привести к ошибкам программирования.

Неизменяемая коллекция — это коллекция, все мутаторные методы которой (как определено выше) указаны для выбрасывания UnsupportedOperationException. Таким образом, такую коллекцию нельзя изменить, вызывая на ней любые методы. Для того, чтобы коллекция была должным образом неизменяемой, любые коллекции-представления, полученные от неё, также должны быть неизменяемыми. Например, если список неизменяем, список, возвращаемый List.subList, также является неизменяемым.

Неизменяемая коллекция не обязательно является неизменяемой в смысле неизменности её состояния. Если содержащиеся элементы изменяемы, то вся коллекция явно изменяема, даже если она неизменяема. Например, рассмотрим два неизменяемых списка, содержащих изменяемые элементы. Результат вызова list1.equals(list2) может отличаться от одного вызова к другому, если элементы были изменены, даже если оба списка неизменяемы. Однако, если неизменяемая коллекция содержит только неизменяемые элементы, её можно считать фактически неизменяемой.

Неизменяемые коллекции-представления

Неизменяемая коллекция-представление — это коллекция, которая является неизменяемой и также является представлением базовой коллекции. Её мутаторные методы выбрасывают UnsupportedOperationException, как описано выше, в то время как методы чтения и запроса делегируются базовой коллекции. Эффект заключается в обеспечении только чтения к базовой коллекции. Это полезно для компонента, который предоставляет пользователям доступ для чтения к внутренней коллекции, не позволяя им неожиданно изменять такие коллекции. Примерами неизменяемых коллекций-представлений являются те, которые возвращаются методами Collections.unmodifiableCollection, Collections.unmodifiableList и аналогичными методами.

Обратите внимание, что изменение базовой коллекции всё ещё возможно, и если они произойдут, они видны через неизменяемое представление. Таким образом, неизменяемая коллекция-представление не обязательно неизменяема. Однако, если базовая коллекция неизменяемого представления фактически неизменяема или если единственная ссылка на базовую коллекцию происходит через неизменяемое представление, представление можно считать фактически неизменяемым.

Сериализация коллекций

Сериализация коллекций необязательна. В связи с этим, ни один из интерфейсов коллекций не объявлен реализующим интерфейс Serializable. Однако сериализация считается в целом полезной, поэтому большинство реализаций коллекций сериализуемы.

Реализации коллекций, которые являются публичными классами (например, ArrayList или HashMap) объявляются реализующими интерфейс Serializable, если они действительно сериализуемы. Некоторые реализации коллекций не являются публичными классами, например, неизменяемые коллекции. В таких случаях сериализуемость таких коллекций описана в спецификации метода, который их создаёт, или в другом подходящем месте. В случаях, когда сериализуемость коллекции не указана, нет гарантий относительно сериализуемости таких коллекций. В частности, многие коллекции-представления не сериализуемы.

Реализация коллекции, которая имплементирует интерфейс Serializable , не может гарантировать сериализуемость. Причина в том, что в общем случае коллекции содержат элементы других типов, и статически невозможно определить, являются ли экземпляры какого-либо типа элементов фактически сериализуемыми. Например, рассмотрим сериализуемую Collection<E>, где E не имплементирует интерфейс Serializable. Коллекция может быть сериализуемой, если она содержит только элементы некоторого сериализуемого подтипа E, или если она пуста. Таким образом, коллекции называются условно сериализуемыми, так как сериализуемость коллекции в целом зависит от того, сама коллекция сериализуема и от того, все ли содержащиеся элементы также сериализуемы.

Дополнительный случай возникает с экземплярами SortedSet и SortedMap. Эти коллекции могут быть созданы с Comparator, который задаёт порядок элементов множества или ключей карты. Такая коллекция сериализуема только в том случае, если предоставленный Comparator также сериализуем.

Данный интерфейс является членом Java Collections Framework.

Требования к реализации:
Реализация по умолчанию (унаследованная или иная) не применяет никакого протокола синхронизации. Если реализация Collection имеет определённый протокол синхронизации, то она должна переопределить реализацию по умолчанию, чтобы применить этот протокол.
С:
1.2
См. также:
  • Set
  • List
  • Map
  • SortedSet
  • SortedMap
  • HashSet
  • TreeSet
  • ArrayList
  • LinkedList
  • Vector
  • Collections
  • Arrays
  • AbstractCollection

Краткое описание методов

Модификатор и тип Метод Описание
boolean add(E e)
Обеспечивает, что эта коллекция содержит указанный элемент (необязательная операция).
boolean addAll(Collection<? extends E> c)
Добавляет все элементы из указанной коллекции в эту коллекцию (необязательная операция).
void clear()
Удаляет все элементы из этой коллекции (необязательная операция).
boolean contains(Object o)
Возвращает true, если эта коллекция содержит указанный элемент.
boolean containsAll(Collection<?> c)
Возвращает true, если эта коллекция содержит все элементы из указанной коллекции.
boolean equals(Object o)
Сравнивает указанный объект с этой коллекцией на равенство.
int hashCode()
Возвращает значение хэш-кода для этой коллекции.
boolean isEmpty()
Возвращает true, если эта коллекция не содержит элементов.
Iterator<E> iterator()
Возвращает итератор по элементам в этой коллекции.
default Stream<E> parallelStream()
Возвращает потенциально параллельный Stream с этой коллекцией в качестве источника.
boolean remove(Object o)
Удаляет один экземпляр указанного элемента из этой коллекции, если он присутствует (необязательная операция).
boolean removeAll(Collection<?> c)
Удаляет все элементы этой коллекции, которые также содержатся в указанной коллекции (необязательная операция).
default boolean removeIf(Predicate<? super E> filter)
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату.
boolean retainAll(Collection<?> c)
Оставляет только элементы в этой коллекции, которые содержатся в указанной коллекции (необязательная операция).
int size()
Возвращает количество элементов в этой коллекции.
default Spliterator<E> spliterator()
Создаёт Spliterator по элементам в этой коллекции.
default Stream<E> stream()
Возвращает последовательный Stream с этой коллекцией в качестве источника.
Object[] toArray()
Возвращает массив, содержащий все элементы в этой коллекции.
default <T> T[] toArray(IntFunction<T[]> generator)
Возвращает массив, содержащий все элементы в этой коллекции, используя предоставленную функцию generator для выделения возвращаемого массива.
<T> T[] toArray(T[] a)
Возвращает массив, содержащий все элементы в этой коллекции; тип возвращаемого массива соответствует указанному массиву.

Методы, объявленные в интерфейсе java.lang.Iterable

forEach

Подробное описание методов

size

int size()
Возвращает количество элементов в этой коллекции. Если эта коллекция содержит более Integer.MAX_VALUE элементов, возвращает Integer.MAX_VALUE.
Возвращает:
количество элементов в этой коллекции

isEmpty

boolean isEmpty()
Возвращает true, если эта коллекция не содержит элементов.
Возвращает:
true если эта коллекция не содержит элементов

contains

boolean contains(Object o)
Возвращает true, если эта коллекция содержит указанный элемент. Более формально, возвращает true тогда и только тогда, когда эта коллекция содержит по крайней мере один элемент e, такой что Objects.equals(o, e).
Параметры:
o - элемент, присутствие которого в этой коллекции требуется проверить
Возвращает:
true если эта коллекция содержит указанный элемент
Исключения:
ClassCastException - если тип указанного элемента несовместим с этой коллекцией (необязательно)
NullPointerException - если указанный элемент равен null, и эта коллекция не допускает null-элементов (необязательно)

iterator

Iterator<E> iterator()
Возвращает итератор по элементам в этой коллекции. Нет гарантий относительно порядка, в котором возвращаются элементы (если только эта коллекция не является экземпляром класса, предоставляющего такую гарантию).
Определено в:
iterator в интерфейсе Iterable<E>
Возвращает:
итератор по элементам в этой коллекции

toArray

Object[] toArray()
Возвращает массив, содержащий все элементы этой коллекции. Если эта коллекция гарантирует какой-либо порядок возвращения элементов итератором, этот метод должен возвращать элементы в том же порядке. Тип возвращаемого массива — Object.

Возвращаемый массив является «безопасным» в том смысле, что ссылки на него не сохраняются в этой коллекции. (Другими словами, этот метод должен выделять новый массив, даже если эта коллекция основана на массиве). Вызывающая сторона свободна изменять возвращаемый массив.

Примечание API:
Этот метод служит мостом между API, основанными на массивах, и API, основанными на коллекциях. Он возвращает массив, тип которого — Object[]. Используйте toArray(T[]) для повторного использования существующего массива или используйте toArray(IntFunction) для управления типом возвращаемого массива.
Возвращает:
массив, тип которого — Object, содержащий все элементы в этой коллекции

toArray

<T> T[] toArray(T[] a)
Возвращает массив, содержащий все элементы этой коллекции; тип возвращаемого массива — тип указанного массива. Если коллекция помещается в указанный массив, она возвращается в нём. В противном случае, выделяется новый массив с типом указанного массива и размером этой коллекции.

Если эта коллекция помещается в указанный массив с избытком места (т.е., массив имеет больше элементов, чем эта коллекция), элемент в массиве сразу после конца коллекции устанавливается в значение null. (Это полезно для определения длины этой коллекции только, если вызывающая сторона знает, что эта коллекция не содержит каких-либо String элементов.)

Если эта коллекция гарантирует какой-либо порядок возвращения элементов итератором, этот метод должен возвращать элементы в том же порядке.

Примечание API:
Этот метод служит мостом между API, основанными на массивах, и API, основанными на коллекциях. Он позволяет повторно использовать существующий массив в определённых обстоятельствах. Используйте toArray() для создания массива с типом Object[], или используйте toArray(IntFunction) для управления типом массива.

Предположим, что x — это коллекция, известно, что она содержит только строки. Следующий код можно использовать для выгрузки коллекции в предварительно выделенный массив String:

     String[] y = new String[SIZE];
     ...
     y = x.toArray(y);

Значение возврата переприсваивается переменной y, потому что будет выделен и возвращён новый массив, если коллекция x имеет слишком много элементов, чтобы поместиться в существующий массив y.

Обратите внимание, что toArray(new Object[0]) идентичен по функции toArray().

Параметры типа:
T - тип компонент массива, содержащего коллекцию
Параметры:
a - массив, в который должны быть помещены элементы этой коллекции, если он достаточно велик; в противном случае для этой цели выделяется новый массив того же типа.
Возвращает:
массив, содержащий все элементы в этой коллекции
Исключения:
ArrayStoreException - если тип выполнения любого элемента в этой коллекции не может быть приведён к типу выполнения компонента указанного массива
NullPointerException - если указанный массив равен null

toArray

default <T> T[] toArray(IntFunction<T[]> generator)
Возвращает массив, содержащий все элементы этой коллекции, используя предоставленную функцию generator для выделения возвращаемого массива.

Если эта коллекция гарантирует какой-либо порядок возвращения элементов итератором, этот метод должен возвращать элементы в том же порядке.

Примечание API:
Этот метод служит мостом между API, основанными на массивах, и API, основанными на коллекциях. Он позволяет создавать массив определённого типа выполнения. Используйте toArray() для создания массива с типом выполнения Object[], или используйте toArray(T[]) для повторного использования существующего массива.

Предположим, что x — это коллекция, известно, что она содержит только строки. Следующий код можно использовать для выгрузки коллекции в нововыделенный массив String:

     String[] y = x.toArray(String[]::new);
Требования к реализации:
Стандартная реализация вызывает функцию генератора с нулём, а затем передаёт получившийся массив в toArray(T[]).
Параметры типа:
T - тип компонент массива, содержащего коллекцию
Параметры:
generator - функция, которая производит новый массив нужного типа и заданной длины
Возвращает:
массив, содержащий все элементы в этой коллекции
Исключения:
ArrayStoreException - если тип выполнения любого элемента в этой коллекции не может быть приведён к типу выполнения компонента сгенерированного массива
NullPointerException - если функция генератора равна null
С:
11

add

boolean add(E e)
Обеспечивает, что эта коллекция содержит указанный элемент (необязательная операция). Возвращает true если коллекция изменилась в результате вызова. (Возвращает false если эта коллекция не допускает дубликатов и уже содержит указанный элемент.)

Коллекции, поддерживающие эту операцию, могут накладывать ограничения на добавляемые элементы. В частности, некоторые коллекции откажутся добавлять null элементы, а другие наложат ограничения на тип добавляемых элементов. Классы коллекций должны чётко указывать в своей документации любые ограничения на добавляемые элементы.

Если коллекция отказывается добавлять определённый элемент по любой причине, кроме того, что она уже содержит этот элемент, она обязана выбросить исключение (а не вернуть false). Это сохраняет инвариант, что коллекция всегда содержит указанный элемент после возврата этого вызова.

Параметры:
e - элемент, чьё присутствие в этой коллекции необходимо обеспечить
Возвращает:
true если эта коллекция изменилась в результате вызова
Исключения:
UnsupportedOperationException - если операция add не поддерживается этой коллекцией
ClassCastException - если класс указанного элемента не позволяет добавить его в эту коллекцию
NullPointerException - если указанный элемент равен null, и эта коллекция не допускает null-элементов
IllegalArgumentException - если какое-либо свойство элемента не позволяет добавить его в эту коллекцию
IllegalStateException - если элемент не может быть добавлен в данный момент из-за ограничений вставки

remove

boolean remove(Object o)
Удаляет единственный экземпляр указанного элемента из этой коллекции, если он присутствует (необязательная операция). Более формально, удаляет элемент e, такой что Objects.equals(o, e), если эта коллекция содержит один или несколько таких элементов. Возвращает true если эта коллекция содержала указанный элемент (или, эквивалентно, если коллекция изменилась в результате вызова).
Параметры:
o - элемент, который необходимо удалить из этой коллекции, если он присутствует
Возвращает:
true если элемент был удалён в результате этого вызова
Исключения:
ClassCastException - если тип указанного элемента несовместим с этой коллекцией (необязательно)
NullPointerException - если указанный элемент равен null, и эта коллекция не допускает null-элементов (необязательно)
UnsupportedOperationException - если операция remove не поддерживается этой коллекцией

containsAll

boolean containsAll(Collection<?> c)
Возвращает true , если эта коллекция содержит все элементы в указанной коллекции.
Параметры:
c - коллекция, подлежащая проверке на включение в эту коллекцию
Возвращает:
true , если эта коллекция содержит все элементы в указанной коллекции
Исключение:
ClassCastException - если типы одного или нескольких элементов в указанной коллекции несовместимы с этой коллекцией (необязательно)
NullPointerException - если указанная коллекция содержит один или несколько нулевых элементов, а эта коллекция не допускает нулевые элементы (необязательно), или если указанная коллекция равна null.
См. также:
  • contains(Object)

addAll

boolean addAll(Collection<? extends E> c)
Добавляет все элементы из указанной коллекции в эту коллекцию (необязательная операция). Поведение этой операции не определено, если указанная коллекция изменяется во время выполнения операции. (Это подразумевает, что поведение этого вызова не определено, если указанная коллекция является этой коллекцией, и эта коллекция не пуста.)
Параметры:
c - коллекция, содержащая элементы, которые должны быть добавлены в эту коллекцию
Возвращает:
true , если эта коллекция изменилась в результате вызова
Исключение:
UnsupportedOperationException - если операция addAll не поддерживается этой коллекцией
ClassCastException - если класс элемента указанной коллекции препятствует его добавлению в эту коллекцию
NullPointerException - если указанная коллекция содержит нулевой элемент, а эта коллекция не допускает нулевых элементов, или если указанная коллекция равна null
IllegalArgumentException - если какое-либо свойство элемента указанной коллекции препятствует его добавлению в эту коллекцию
IllegalStateException - если не все элементы могут быть добавлены в данный момент из-за ограничений вставки
См. также:
  • add(Object)

removeAll

boolean removeAll(Collection<?> c)
Удаляет все элементы этой коллекции, которые также содержатся в указанной коллекции (необязательная операция). После возврата этого вызова эта коллекция не будет содержать общих элементов с указанной коллекцией.
Параметры:
c - коллекция, содержащая элементы, которые должны быть удалены из этой коллекции
Возвращает:
true , если эта коллекция изменилась в результате вызова
Исключение:
UnsupportedOperationException - если метод removeAll не поддерживается этой коллекцией
ClassCastException - если типы одного или нескольких элементов в этой коллекции несовместимы с указанной коллекцией (необязательно)
NullPointerException - если эта коллекция содержит один или несколько нулевых элементов, а указанная коллекция не поддерживает нулевые элементы (необязательно), или если указанная коллекция равна null
См. также:
  • remove(Object)
  • contains(Object)

removeIf

default boolean removeIf(Predicate<? super E> filter)
Удаляет все элементы этой коллекции, удовлетворяющие заданному предикату. Ошибки или исключения во время выполнения, сгенерированные во время итерации или предикатом, передаются вызывающей стороне.
Требования к реализации:
Базовая реализация проходит по всем элементам коллекции, используя ее iterator(). Каждый соответствующий элемент удаляется с помощью Iterator.remove(). Если итератор коллекции не поддерживает удаление, то будет брошено исключение UnsupportedOperationException для первого соответствующего элемента.
Параметры:
filter - предикат, возвращающий true для элементов, подлежащих удалению
Возвращает:
true , если были удалены какие-либо элементы
Исключение:
NullPointerException - если указанный фильтр равен null
UnsupportedOperationException - если элементы не могут быть удалены из этой коллекции. Реализации могут бросить это исключение, если соответствующий элемент не может быть удален или если, вообще, удаление не поддерживается.
С:
1.8

retainAll

boolean retainAll(Collection<?> c)
Оставляет только элементы в этой коллекции, которые содержатся в указанной коллекции (необязательная операция). Другими словами, удаляет из этой коллекции все ее элементы, которые не содержатся в указанной коллекции.
Параметры:
c - коллекция, содержащая элементы, которые должны остаться в этой коллекции
Возвращает:
true , если эта коллекция изменилась в результате вызова
Исключение:
UnsupportedOperationException - если операция retainAll не поддерживается этой коллекцией
ClassCastException - если типы одного или нескольких элементов в этой коллекции несовместимы с указанной коллекцией (необязательно)
NullPointerException - если эта коллекция содержит один или несколько нулевых элементов, а указанная коллекция не допускает нулевых элементов (необязательно), или если указанная коллекция равна null
См. также:
  • remove(Object)
  • contains(Object)

clear

void clear()
Удаляет все элементы из этой коллекции (необязательная операция). Коллекция будет пустой после возврата этого метода.
Исключение:
UnsupportedOperationException - если операция clear не поддерживается этой коллекцией

equals

boolean equals(Object o)
Сравнивает указанный объект с этой коллекцией на равенство.

Хотя интерфейс Collection не добавляет никаких ограничений к общему соглашению для метода Object.equals, программисты, реализующие интерфейс Collection "непосредственно" (другими словами, создающие класс, являющийся Collection, но не Set или List), должны проявить осторожность, если они выбирают переопределение метода Object.equals. Это не обязательно, и самый простой способ - полагаться на реализацию Object, но реализатор может захотеть реализовать "сравнение по значению" вместо стандартного "сравнения по ссылке". (Интерфейсы List и Set требуют таких сравнений по значению.)

Общее соглашение для метода Object.equals гласит, что equals должен быть симметричным (другими словами, a.equals(b) тогда и только тогда, когда b.equals(a)). Соглашения для List.equals и Set.equals указывают, что списки равны только другим спискам, а множества - другим множествам. Таким образом, пользовательский метод equals для класса коллекции, реализующего ни интерфейс List, ни интерфейс Set, должен возвращать false при сравнении этой коллекции с любым списком или множеством. (По той же логике невозможно написать класс, который правильно реализует и интерфейс Set, и интерфейс List.)

Переопределяет:
equals в классе Object
Параметры:
o - объект, подлежащий сравнению на равенство с этой коллекцией
Возвращает:
true , если указанный объект равен этой коллекции
См. также:
  • Object.equals(Object)
  • Set.equals(Object)
  • List.equals(Object)

hashCode

int hashCode()
Возвращает значение хэш-кода для этой коллекции. Хотя интерфейс Collection не добавляет никаких ограничений к общему соглашению для метода Object.hashCode, программисты должны обратить внимание, что любой класс, переопределяющий метод Object.equals, должен также переопределить метод Object.hashCode, чтобы удовлетворить общему соглашению для метода Object.hashCode. В частности, c1.equals(c2) подразумевает, что c1.hashCode()==c2.hashCode().
Переопределяет:
hashCode в классе Object
Возвращает:
значение хэш-кода для этой коллекции
См. также:
  • Object.hashCode()
  • Object.equals(Object)

spliterator

default Spliterator<E> spliterator()
Создаёт Spliterator над элементами в этом наборе. Реализации должны документировать характерные значения, сообщаемые разделителем. Такие характерные значения не требуются, если разделитель сообщает Spliterator.SIZED, а этот набор не содержит элементов.

Подклассы, которые могут вернуть более эффективный разделитель, должны переопределить стандартную реализацию. Для сохранения ожидаемого поведения лени для методов stream() и parallelStream(), разделители должны обладать характеристикой IMMUTABLE или CONCURRENT, или быть отложенно связанными. Если ни одно из этого не практично, переопределяющий класс должен описать задокументированную политику связывания и структурного вмешательства разделителя и должен переопределить методы stream() и parallelStream(), чтобы создать потоки, используя Supplier разделителя, как в примере:


     Stream<E> s = StreamSupport.stream(() -> spliterator(), spliteratorCharacteristics)
 

Эти требования гарантируют, что потоки, созданные методами stream() и parallelStream(), будут отражать содержимое набора на момент инициирования терминальной операции потока.

Указано в:
spliterator в интерфейсе Iterable<E>
Требования к реализации:
Стандартная реализация создаёт отложенно связанный разделитель из итератора набора. Разделитель наследует свойства быстрого отказа от итератора набора.

Созданный Spliterator сообщает Spliterator.SIZED.

Примечание реализации:
Созданный Spliterator дополнительно сообщает Spliterator.SUBSIZED.

Если разделитель не охватывает никаких элементов, то сообщение дополнительных характеристических значений, помимо SIZED и SUBSIZED, не помогает клиентам управлять, специализировать или упрощать вычисления. Однако это позволяет совместно использовать неизменяемый и пустой экземпляр разделителя (см. Spliterators.emptySpliterator()) для пустых наборов и позволяет клиентам определить, охватывает ли такой разделитель какие-либо элементы.

Возвращает:
Spliterator над элементами в этом наборе
С:
1.8

stream

default Stream<E> stream()
Возвращает последовательный Stream с этим набором в качестве источника.

Этот метод должен быть переопределён, когда метод spliterator() не может вернуть разделитель, который является IMMUTABLE, CONCURRENT, или отложенно связанным. (См. spliterator() для получения дополнительных сведений.)

Требования к реализации:
Стандартная реализация создаёт последовательный Stream из итератора набора.
Возвращает:
последовательный Stream над элементами в этом наборе
С:
1.8

parallelStream

default Stream<E> parallelStream()
Возвращает, возможно, параллельный Stream с этим набором в качестве источника. Допускается, что этот метод вернёт последовательный поток.

Этот метод должен быть переопределён, когда метод spliterator() не может вернуть разделитель, который является IMMUTABLE, CONCURRENT, или отложенно связанным. (См. spliterator() для получения дополнительных сведений.)

Требования к реализации:
Стандартная реализация создаёт параллельный Stream из итератора набора.
Возвращает:
возможно параллельный Stream над элементами в этом наборе
С:
1.8

© 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/Collection.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API