Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class AbstractCollection<E> extends Object implements Collection<E>
Чтобы реализовать неподдающийся изменению набор, программист должен только расширить этот класс и обеспечить реализации для методов iterator И size. (iterator, возвращенный методом iterator, должен реализовать hasNext и next.)
Чтобы реализовать поддающийся изменению набор, программист должен дополнительно переопределить метод add этого класса (который иначе бросает UnsupportedOperationException), и iterator, возвращенный методом iterator, должен дополнительно реализовать свой метод remove.
Программист должен обычно обеспечить пустоту (никакой параметр) и конструктор Collection согласно рекомендации в спецификации интерфейса Collection.
Документация для каждого неабстрактного метода в этом классе описывает свою реализацию подробно. Каждый из этих методов может быть переопределен, если реализовываемый набор допускает более эффективную реализацию.
Этот класс является элементом Платформы Наборов Java.
Collection
Модификатор | Конструктор и Описание |
---|---|
protected |
AbstractCollection()
Единственный конструктор.
|
Модификатор и Тип | Метод и Описание |
---|---|
boolean |
add(E e)
Гарантирует, что этот набор содержит указанный элемент (дополнительная работа).
|
boolean |
addAll(Collection<? extends E> c)
Добавляют все элементы в указанном наборе к этому набору (дополнительная работа).
|
void |
clear()
Удаляет все элементы от этого набора (дополнительная работа).
|
boolean |
contains(Object o)
true возвратов, если этот набор содержит указанный элемент.
|
boolean |
containsAll(Collection<?> c)
true возвратов, если этот набор содержит все элементы в указанном наборе.
|
boolean |
isEmpty()
true возвратов, если этот набор не содержит элементов.
|
abstract Iterator<E> |
iterator()
Возвращает iterator по элементам, содержавшимся в этом наборе.
|
boolean |
remove(Object o)
Удаляет единственный экземпляр указанного элемента от этого набора, если это присутствует (дополнительная работа).
|
boolean |
removeAll(Collection<?> c)
Удаляет все элементы этого набора, которые также содержатся в указанном наборе (дополнительная работа).
|
boolean |
retainAll(Collection<?> c)
Сохраняет только элементы в этом наборе, которые содержатся в указанном наборе (дополнительная работа).
|
abstract int |
size()
Возвращает число элементов в этом наборе.
|
Объект[] |
toArray()
Возвращает массив, содержащий все элементы в этом наборе.
|
<T> T[] |
toArray(T[] a)
Возвращает массив, содержащий все элементы в этом наборе; тип времени выполнения возвращенного массива является типом указанного массива.
|
Строка |
toString()
Возвращает строковое представление этого набора.
|
protected AbstractCollection()
public abstract Iterator<E> iterator()
public abstract int size()
Collection
size
в интерфейсе Collection<E>
public boolean isEmpty()
Эта реализация возвращает size() == 0.
isEmpty
в интерфейсе Collection<E>
public boolean contains(Object o)
Эта реализация выполняет итерации по элементам в наборе, проверяя каждый элемент поочередно на равенство с указанным элементом.
contains
в интерфейсе Collection<E>
o
- элемент, присутствие которого в этом наборе должно быть протестированоClassCastException
- если тип указанного элемента является несовместимым с этим (дополнительным) наборомNullPointerException
- если указанный элемент является нулем, и этот набор не разрешает нулевые (дополнительные) элементыpublic Object[] toArray()
Возвращенный массив будет "безопасен" в этом, никакие ссылки на него не сохраняются этим набором. (Другими словами этот метод должен выделить новый массив, даже если этот набор поддерживается массивом). Вызывающая сторона таким образом свободна изменить возвращенный массив.
Этот метод действует как мост между основанными на массиве и основанными на наборе API.
Эта реализация возвращает массив, содержащий все элементы, возвращенные iterator этого набора, в том же самом порядке, сохраненном в последовательных элементах массива, запускающегося с индекса 0
. Длина возвращенного массива равна числу элементов, возвращенному iterator, даже если размер этого набора изменяется во время итерации, как это могло бы произойти, если набор разрешает параллельную модификацию во время итерации. size
метод вызывают только как подсказка оптимизации; корректный результат возвращается, даже если iterator возвращает различное число элементов.
Этот метод эквивалентен:
List<E> list = new ArrayList<E>(size());
for (E e : this)
list.add(e);
return list.toArray();
toArray
в интерфейсе Collection<E>
public <T> T[] toArray(T[] a)
Если этот набор помещается в указанный массив с комнатой, чтобы сэкономить (то есть, у массива есть больше элементов чем этот набор), элемент в массиве сразу после конца набора устанавливается в null. (Это полезно в определении длины этого набора, только если вызывающая сторона знает, что этот набор не содержит элементов null.)
Если этот набор делает какие-либо гарантии относительно того, какой порядок его элементы возвращаются его iterator, этот метод должен возвратить элементы в том же самом порядке.
Как Collection.toArray()
метод, этот метод действует как мост между основанными на массиве и основанными на наборе API. Далее, этот метод позволяет точное управление типом времени выполнения выходного массива, и, при определенных обстоятельствах, может использоваться, чтобы сохранить затраты выделения.
Предположите, что x является набором, который, как известно, содержал только строки. Следующий код может использоваться, чтобы вывести набор в недавно выделенный массив String:
String[] y = x.toArray(new String[0]);Отметьте, что toArray(new Object[0]) идентичен в функции toArray().
Эта реализация возвращает массив, содержащий все элементы, возвращенные iterator этого набора в том же самом порядке, сохраненном в последовательных элементах массива, запускающегося с индекса 0
. Если число элементов, возвращенное iterator, является слишком большим, чтобы вписаться в указанный массив, то элементы возвращаются в недавно выделенном массиве с длиной, равной числу элементов, возвращенному iterator, даже если размер этого набора изменяется во время итерации, как это могло бы произойти, если набор разрешает параллельную модификацию во время итерации. size
метод вызывают только как подсказка оптимизации; корректный результат возвращается, даже если iterator возвращает различное число элементов.
Этот метод эквивалентен:
List<E> list = new ArrayList<E>(size());
for (E e : this)
list.add(e);
return list.toArray(a);
toArray
в интерфейсе Collection<E>
a
- массив, в который должны быть сохранены элементы этого набора, если это является достаточно большим; иначе, новый массив того же самого типа времени выполнения выделяется с этой целью.ArrayStoreException
- если тип времени выполнения указанного массива не является супертипом типа времени выполнения каждого элемента в этом набореNullPointerException
- если указанный массив является нулемpublic boolean add(E e)
Наборы, которые поддерживают эту работу, могут поместить ограничения на то, какие элементы могут быть добавлены к этому набору. В частности некоторые наборы откажутся добавить элементы null, и другие введут ограничения для типа элементов, которые могут быть добавлены. Классы набора должны ясно определить в их документации любые ограничения на то, какие элементы могут быть добавлены.
Если набор отказывается добавить определенный элемент по какой-либо причине, кроме которой он уже содержит элемент, он должен выдать исключение (вместо того, чтобы возвратить false). Это сохраняет инвариант, что набор всегда содержит указанный элемент после этого вызова возвраты.
Эта реализация всегда бросает UnsupportedOperationException.
add
в интерфейсе Collection<E>
e
- элемент, присутствие которого в этом наборе должно быть обеспеченоUnsupportedOperationException
- если работа add не поддерживается этим наборомClassCastException
- если класс указанного элемента препятствует тому, чтобы это было добавлено к этому наборуNullPointerException
- если указанный элемент является нулем, и этот набор не разрешает нулевые элементыIllegalArgumentException
- если некоторое свойство элемента препятствует тому, чтобы это было добавлено к этому наборуIllegalStateException
- если элемент не может быть добавлен в это время из-за ограничений вставкиpublic boolean remove(Object o)
Эта реализация выполняет итерации по набору, ища указанный элемент. Если это находит элемент, это удаляет элемент из набора, используя iterator's, удаляют метод.
Отметьте, что эта реализация бросает UnsupportedOperationException, если iterator, возвращенный iterator методом этого набора, не реализует метод remove, и этот набор содержит указанный объект.
remove
в интерфейсе Collection<E>
o
- элемент, который будет удален из этого набора, если существующийUnsupportedOperationException
- если работа remove не поддерживается этим наборомClassCastException
- если тип указанного элемента является несовместимым с этим (дополнительным) наборомNullPointerException
- если указанный элемент является нулем, и этот набор не разрешает нулевые (дополнительные) элементыpublic boolean containsAll(Collection<?> c)
Эта реализация выполняет итерации по указанному набору, проверяя каждый элемент, возвращенный iterator поочередно, чтобы видеть, содержится ли это в этом наборе. Если всеми элементами является так содержавший true, возвращается, иначе false.
containsAll
в интерфейсе Collection<E>
c
- набор, который будет проверен на включение в этом набореClassCastException
- если типы одного или более элементов в указанном наборе являются несовместимыми с этим (дополнительным) наборомNullPointerException
- если указанный набор содержит один или более нулевых элементов, и этот набор не разрешает нулевые (дополнительные) элементы, или если указанный набор является нулем.contains(Object)
public boolean addAll(Collection<? extends E> c)
Эта реализация выполняет итерации по указанному набору, и добавляет каждый объект, возвращенный iterator к этому набору, поочередно.
Отметьте, что эта реализация бросит UnsupportedOperationException, если add не будет переопределен (принятие, что указанный набор непуст).
addAll
в интерфейсе Collection<E>
c
- набор, содержащий элементы, которые будут добавлены к этому наборуUnsupportedOperationException
- если работа addAll не поддерживается этим наборомClassCastException
- если класс элемента указанного набора препятствует тому, чтобы это было добавлено к этому наборуNullPointerException
- если указанный набор содержит нулевой элемент, и этот набор не разрешает нулевые элементы, или если указанный набор является нулемIllegalArgumentException
- если некоторое свойство элемента указанного набора препятствует тому, чтобы это было добавлено к этому наборуIllegalStateException
- если не все элементы могут быть добавлены в это время из-за ограничений вставкиadd(Object)
public boolean removeAll(Collection<?> c)
Эта реализация выполняет итерации по этому набору, проверяя каждый элемент, возвращенный iterator поочередно, чтобы видеть, содержится ли это в указанном наборе. Если это столь содержится, это удаляется из этого набора с методом remove iterator.
Отметьте, что эта реализация бросит UnsupportedOperationException, если iterator, возвращенный методом iterator, не реализует метод remove, и этот набор содержит один или более элементов вместе с указанным набором.
removeAll
в интерфейсе Collection<E>
c
- набор, содержащий элементы, которые будут удалены из этого набораUnsupportedOperationException
- если метод removeAll не поддерживается этим наборомClassCastException
- если типы одного или более элементов в этом наборе являются несовместимыми с указанным (дополнительным) наборомNullPointerException
- если этот набор содержит один или более нулевых элементов, и указанный набор не поддерживает нулевые (дополнительные) элементы, или если указанный набор является нулемremove(Object)
, contains(Object)
public boolean retainAll(Collection<?> c)
Эта реализация выполняет итерации по этому набору, проверяя каждый элемент, возвращенный iterator поочередно, чтобы видеть, содержится ли это в указанном наборе. Если это не столь содержится, это удаляется из этого набора с методом remove iterator.
Отметьте, что эта реализация бросит UnsupportedOperationException, если iterator, возвращенный методом iterator, не реализует метод remove, и этот набор содержит один или более элементов, не существующих в указанном наборе.
retainAll
в интерфейсе Collection<E>
c
- набор, содержащий элементы, которые будут сохранены в этом набореUnsupportedOperationException
- если работа retainAll не поддерживается этим наборомClassCastException
- если типы одного или более элементов в этом наборе являются несовместимыми с указанным (дополнительным) наборомNullPointerException
- если этот набор содержит один или более нулевых элементов, и указанный набор не разрешает нулевые (дополнительные) элементы, или если указанный набор является нулемremove(Object)
, contains(Object)
public void clear()
Эта реализация выполняет итерации по этому набору, удаляя каждый элемент, используя работу Iterator.remove. Большинство реализаций будет, вероятно, хотеть переопределять этот метод для эффективности.
Отметьте, что эта реализация бросит UnsupportedOperationException, если iterator, возвращенный методом iterator этого набора, не реализует метод remove, и этот набор непуст.
clear
в интерфейсе Collection<E>
UnsupportedOperationException
- если работа clear не поддерживается этим наборомpublic String toString()
String.valueOf(Object)
.
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.