Spec-Zone .ru
спецификации, руководства, описания, API
|
public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
List
интерфейс, чтобы минимизировать усилие, требуемое реализовывать этот интерфейс, поддержанный хранилищем данных "произвольного доступа" (таким как массив). Для с последовательным доступом данных (таких как связанный список), AbstractSequentialList
должен использоваться в предпочтении к этому классу. Чтобы реализовать неподдающийся изменению список, программист должен только расширить этот класс и обеспечить реализации для get(int)
и size()
методы.
Чтобы реализовать поддающийся изменению список, программист должен дополнительно переопределить set(int, E)
метод (который иначе бросает UnsupportedOperationException
). Если список является переменным размером, программист должен дополнительно переопределить add(int, E)
и remove(int)
методы.
Программист должен обычно обеспечить пустоту (никакой параметр) и конструктор набора согласно рекомендации в Collection
интерфейсная спецификация.
В отличие от других абстрактных реализаций набора, программист не должен обеспечить iterator реализацию; iterator и список iterator реализуются этим классом сверху методов "произвольного доступа": get(int)
, set(int, E)
, add(int, E)
и remove(int)
.
Документация для каждого неабстрактного метода в этом классе описывает свою реализацию подробно. Каждый из этих методов может быть переопределен, если реализовываемый набор допускает более эффективную реализацию.
Этот класс является элементом Платформы Наборов Java.
Модификатор и Тип | Поле и Описание |
---|---|
protected int |
modCount
Число раз этот список было структурно изменено.
|
Модификатор | Конструктор и Описание |
---|---|
protected |
AbstractList()
Единственный конструктор.
|
Модификатор и Тип | Метод и Описание |
---|---|
boolean |
add(E e)
Добавляет указанный элемент до конца этого списка (дополнительная работа).
|
void |
add(int index, E element)
Вставляет указанный элемент в указанной позиции в этом списке (дополнительная работа).
|
boolean |
addAll(int index, Collection<? extends E> c)
Вставляет все элементы в указанном наборе в этот список в указанной позиции (дополнительная работа).
|
void |
clear()
Удаляет все элементы от этого списка (дополнительная работа).
|
boolean |
equals(Object o)
Сравнивает указанный объект с этим списком для равенства.
|
abstract E |
get(int index)
Возвращает элемент в указанной позиции в этом списке.
|
int |
hashCode()
Возвращает значение хэш-кода для этого списка.
|
int |
indexOf(Object o)
Возвращает индекс первого возникновения указанного элемента в этом списке, или-1, если этот список не содержит элемент.
|
Iterator<E> |
iterator()
Возвращает iterator по элементам в этом списке в надлежащей последовательности.
|
int |
lastIndexOf(Object o)
Возвращает индекс последнего вхождения указанного элемента в этом списке, или-1, если этот список не содержит элемент.
|
ListIterator<E> |
listIterator()
Возвращает список iterator по элементам в этом списке (в надлежащей последовательности).
|
ListIterator<E> |
listIterator(int index)
Возвращает список iterator по элементам в этом списке (в надлежащей последовательности), запускаясь в указанной позиции в списке.
|
E |
remove(int index)
Удаляет элемент в указанной позиции в этом списке (дополнительная работа).
|
protected void |
removeRange(int fromIndex, int toIndex)
Удаляет из этого списка все элементы, индекс которых между
fromIndex , включительно, и toIndex , монопольный. |
E |
set(int index, E element)
Заменяет элемент в указанной позиции в этом списке с указанным элементом (дополнительная работа).
|
List<E> |
subList(int fromIndex, int toIndex)
Возвращает представление части этого списка между указанным fromIndex, включительно, и toIndex, монопольным.
|
addAll, contains, containsAll, isEmpty, remove, removeAll, retainAll, size, toArray, toArray, toString
protected transient int modCount
Это поле используется iterator и списком iterator реализация, возвращенная iterator
и listIterator
методы. Если значение этого поля неожиданно изменится, то iterator (или список iterator) бросит a ConcurrentModificationException
в ответ на next
, remove
, previous
, set
или add
операции. Это обеспечивает поведение сбоя быстро, а не недетерминированное поведение перед лицом параллельной модификации во время итерации.
Использование этого поля подклассами является дополнительным. Если подкласс хочет обеспечить сбой быстро iterators (и перечислять iterators), то это просто должно постепенно увеличить это поле в add(int, E)
и remove(int)
методы (и любые другие методы, что это переопределяет тот результат в структурных модификациях к списку). Единственный звонок add(int, E)
или remove(int)
должен добавить не больше, чем один к этому полю, или iterators (и перечислить iterators), бросит поддельный ConcurrentModificationExceptions
. Если реализация не хочет обеспечивать сбой быстро iterators, это поле может быть проигнорировано.
protected AbstractList()
public boolean add(E e)
Списки, которые поддерживают эту работу, могут поместить ограничения на то, какие элементы могут быть добавлены к этому списку. В частности некоторые списки откажутся добавить нулевые элементы, и другие введут ограничения для типа элементов, которые могут быть добавлены. Классы списка должны ясно определить в их документации любые ограничения на то, какие элементы могут быть добавлены.
Эта реализация вызовы add(size(), e)
.
Отметьте, что эта реализация бросает UnsupportedOperationException
если add(int, E)
переопределяется.
add
в интерфейсе Collection<E>
add
в интерфейсе List<E>
add
в классе AbstractCollection<E>
e
- элемент, который будет добавлен к этому спискуtrue
(как определено Collection.add(E)
)UnsupportedOperationException
- если add
работа не поддерживается этим спискомClassCastException
- если класс указанного элемента препятствует тому, чтобы это было добавлено к этому спискуNullPointerException
- если указанный элемент является нулем, и этот список не разрешает нулевые элементыIllegalArgumentException
- если некоторое свойство этого элемента препятствует тому, чтобы это было добавлено к этому спискуpublic abstract E get(int index)
get
в интерфейсе List<E>
index
- индекс элемента, чтобы возвратитьсяIndexOutOfBoundsException
- если индекс испытывает недостаток диапазона (index < 0 || index >= size())public E set(int index, E element)
Эта реализация всегда бросает UnsupportedOperationException
.
set
в интерфейсе List<E>
index
- индекс элемента, чтобы заменитьelement
- элемент, который будет сохранен в указанной позицииUnsupportedOperationException
- если работа set не поддерживается этим спискомClassCastException
- если класс указанного элемента препятствует тому, чтобы это было добавлено к этому спискуNullPointerException
- если указанный элемент является нулем, и этот список не разрешает нулевые элементыIllegalArgumentException
- если некоторое свойство указанного элемента препятствует тому, чтобы это было добавлено к этому спискуIndexOutOfBoundsException
- если индекс испытывает недостаток диапазона (index < 0 || index >= size())public void add(int index, E element)
Эта реализация всегда бросает UnsupportedOperationException
.
add
в интерфейсе List<E>
index
- индекс, по которому должен быть вставлен указанный элементelement
- элемент, который будет вставленUnsupportedOperationException
- если работа add не поддерживается этим спискомClassCastException
- если класс указанного элемента препятствует тому, чтобы это было добавлено к этому спискуNullPointerException
- если указанный элемент является нулем, и этот список не разрешает нулевые элементыIllegalArgumentException
- если некоторое свойство указанного элемента препятствует тому, чтобы это было добавлено к этому спискуIndexOutOfBoundsException
- если индекс испытывает недостаток диапазона (index < 0 || index > size())public E remove(int index)
Эта реализация всегда бросает UnsupportedOperationException
.
remove
в интерфейсе List<E>
index
- индекс элемента, который будет удаленUnsupportedOperationException
- если работа remove не поддерживается этим спискомIndexOutOfBoundsException
- если индекс испытывает недостаток диапазона (index < 0 || index >= size())public int indexOf(Object o)
Эта реализация сначала получает список iterator (с listIterator()
). Затем, это выполняет итерации по списку, пока указанный элемент не находится, или конец списка достигается.
indexOf
в интерфейсе List<E>
o
- элемент, чтобы искатьClassCastException
- если тип указанного элемента является несовместимым с этим (дополнительным) спискомNullPointerException
- если указанный элемент является нулем, и этот список не разрешает нулевые (дополнительные) элементыpublic int lastIndexOf(Object o)
Эта реализация сначала получает список iterator, который указывает до конца списка (с listIterator(size())
). Затем, это выполняет итерации назад по списку, пока указанный элемент не находится, или начало списка достигается.
lastIndexOf
в интерфейсе List<E>
o
- элемент, чтобы искатьClassCastException
- если тип указанного элемента является несовместимым с этим (дополнительным) спискомNullPointerException
- если указанный элемент является нулем, и этот список не разрешает нулевые (дополнительные) элементыpublic void clear()
Эта реализация вызовы removeRange(0, size())
.
Отметьте, что эта реализация бросает UnsupportedOperationException
если remove(int index)
или removeRange(int fromIndex, int toIndex)
переопределяется.
clear
в интерфейсе Collection<E>
clear
в интерфейсе List<E>
clear
в классе AbstractCollection<E>
UnsupportedOperationException
- если clear
работа не поддерживается этим спискомpublic boolean addAll(int index, Collection<? extends E> c)
Эта реализация получает iterator по указанному набору и выполняет итерации по нему, вставляя элементы, полученные из iterator в этот список в соответствующей позиции, по одному, используя add(int, E)
. Много реализаций переопределят этот метод для эффективности.
Отметьте, что эта реализация бросает UnsupportedOperationException
если add(int, E)
переопределяется.
addAll
в интерфейсе List<E>
index
- индекс, по которому можно вставить первый элемент от указанного набораc
- набор, содержащий элементы, которые будут добавлены к этому спискуUnsupportedOperationException
- если работа addAll не поддерживается этим спискомClassCastException
- если класс элемента указанного набора препятствует тому, чтобы это было добавлено к этому спискуNullPointerException
- если указанный набор содержит один или более нулевых элементов, и этот список не разрешает нулевые элементы, или если указанный набор является нулемIllegalArgumentException
- если некоторое свойство элемента указанного набора препятствует тому, чтобы это было добавлено к этому спискуIndexOutOfBoundsException
- если индекс испытывает недостаток диапазона (index < 0 || index > size())public Iterator<E> iterator()
Эта реализация возвращает прямую реализацию интерфейса iterator, полагаясь на отступающий список size()
, get(int)
, и remove(int)
методы.
Отметьте, что iterator, возвращенный этим методом, бросит UnsupportedOperationException
в ответ на remove
метод, если список remove(int)
метод переопределяется.
Эта реализация может быть сделана бросить исключения на этапе выполнения перед лицом параллельной модификации, как описано в спецификации для (защищенного) modCount
поле.
public ListIterator<E> listIterator()
Эта реализация возвраты listIterator(0)
.
listIterator
в интерфейсе List<E>
listIterator(int)
public ListIterator<E> listIterator(int index)
next
. Начальный вызов previous
возвратил бы элемент с указанным индексом минус один. Эта реализация возвращает прямую реализацию ListIterator
интерфейс, который расширяет реализацию Iterator
интерфейс, возвращенный iterator()
метод. ListIterator
реализация полагается на отступающий список get(int)
, set(int, E)
, add(int, E)
и remove(int)
методы.
Отметьте, что список iterator возвращенный этой реализацией бросит UnsupportedOperationException
в ответ на remove
, set
и add
методы, если список remove(int)
, set(int, E)
, и add(int, E)
методы переопределяются.
Эта реализация может быть сделана бросить исключения на этапе выполнения перед лицом параллельной модификации, как описано в спецификации для (защищенного) modCount
поле.
listIterator
в интерфейсе List<E>
index
- индекс первого элемента, который будет возвращен из списка iterator (звонком next
)IndexOutOfBoundsException
- если индекс испытывает недостаток диапазона (index < 0 || index > size()
)public List<E> subList(int fromIndex, int toIndex)
Этот метод избавляет от необходимости явные операции диапазона (вида, которые обычно существуют для массивов). Любая работа, которая ожидает список, может использоваться в качестве работы диапазона, передавая представление подсписка вместо целого списка. Например, следующая идиома удаляет диапазон элементов от списка:
list.subList(from, to).clear();Подобные идиомы могут быть созданы для indexOf и lastIndexOf, и все алгоритмы в классе Collections могут быть применены к подсписку.
Семантика списка, возвращенного этим методом, становится неопределенной, если отступающий список (то есть, этот список) структурно изменяются всегда кроме через возвращенный список. (Структурные модификации - те, которые изменяют размер этого списка, или иначе тревожат это таким способом, что происходящие итерации могут привести к неправильным результатам.)
Эта реализация возвращает список, который разделяет на подклассы AbstractList
. Хранилища подкласса, в частных полях, смещении подсписка в пределах отступающего списка, размера подсписка (который может переключить его время жизни), и ожидаемый modCount
значение отступающего списка. Есть две разновидности подкласса, одна из которых реализует RandomAccess
. Если этот список реализует RandomAccess
возвращенный список будет экземпляром подкласса, который реализует RandomAccess
.
Подкласс set(int, E)
, get(int)
, add(int, E)
, remove(int)
, addAll(int, Collection)
и removeRange(int, int)
методы весь делегат в соответствующих методах в отступающем абстрактном списке, после проверки границ индекс и корректирующийся для смещения. addAll(Collection c)
метод просто возвращается addAll(size, c)
.
listIterator(int)
метод возвращает "объект обертки" по списку iterator в отступающем списке, который создается с соответствующим методом в отступающем списке. iterator
метод просто возвращается listIterator()
, и size
метод просто возвращает подкласс size
поле.
Все методы сначала проверяют, чтобы видеть если фактическое modCount
из отступающего списка равно его математическому ожиданию, и броску a ConcurrentModificationException
если это не.
subList
в интерфейсе List<E>
fromIndex
- низкая конечная точка (включительно) подспискаtoIndex
- высокая конечная точка (монопольная) из подспискаIndexOutOfBoundsException
- если индексное значение конечной точки испытывает недостаток диапазона (fromIndex < 0 || toIndex > size)
IllegalArgumentException
- если индексы конечной точки не в порядке (fromIndex > toIndex)
public boolean equals(Object o)
true
если и только если указанный объект является также списком, у обоих списков есть тот же самый размер, и все соответствующие пары элементов в двух списках равны. (Два элемента e1
и e2
равны если (e1==null ? e2==null : e1.equals(e2))
.) Другими словами два списка определяются, чтобы быть равными, если они содержат те же самые элементы в том же самом порядке. Эта реализация сначала проверяет, является ли указанный объект этим списком. Если так, это возвращается true
; в противном случае это проверяет, является ли указанный объект списком. В противном случае это возвращается false
; если так, это выполняет итерации свыше обоих списков, сравнивая соответствующих пар элементов. Если какое-либо сравнение возвращается false
, этот метод возвраты false
. Если любой, iterator исчерпывает элементы перед другим, он возвращается false
(поскольку списки имеют неравную длину); иначе это возвращается true
когда итерации завершаются.
equals
в интерфейсе Collection<E>
equals
в интерфейсе List<E>
equals
в классе Object
o
- объект, который будет сравнен для равенства с этим спискомtrue
если указанный объект равен этому спискуObject.hashCode()
, HashMap
public int hashCode()
Эта реализация использует точно код, который используется, чтобы определить хеш-функцию списка в документации для List.hashCode()
метод.
hashCode
в интерфейсе Collection<E>
hashCode
в интерфейсе List<E>
hashCode
в классе Object
Object.equals(java.lang.Object)
, System.identityHashCode(java.lang.Object)
protected void removeRange(int fromIndex, int toIndex)
fromIndex
, включительно, и toIndex
, монопольный. Сдвиги любые последующие элементы налево (уменьшает их индекс). Этот вызов сокращает список (toIndex - fromIndex)
элементы. (Если toIndex==fromIndex
, эта работа не имеет никакого эффекта.) Этот метод вызывают clear
работа в этом списке и его подсписках. Переопределение этого метода, чтобы использовать в своих интересах внутренности реализации списка может существенно улучшить производительность clear
работа в этом списке и его подсписках.
Эта реализация получает список iterator расположенный прежде fromIndex
, и неоднократно вызовы ListIterator.next
сопровождаемый ListIterator.remove
пока весь диапазон не был удален. Отметьте: если ListIterator.remove
требует линейного времени, эта реализация требует квадратного времени.
fromIndex
- индекс первого элемента, который будет удаленtoIndex
- индекс после последнего элемента, который будет удален
Для дальнейшей ссылки API и документации разработчика, см.
Авторское право © 1993, 2011, Oracle и/или его филиалы. Все права защищены.