public interface List
implements Collection<E>
java.util.List<E> |
Known Indirect Subclasses
AbstractList<E>,
AbstractSequentialList<E>,
ArrayList<E>,
CopyOnWriteArrayList<E>,
LinkedList<E>,
ObservableArrayList<T>,
ObservableList<T>,
Stack<E>,
Vector<E>
|
有序集合(也称为序列 )。 该接口的用户可以精确控制每个元素插入到列表中的哪个位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。
与集合不同,列表通常允许重复元素。 更正式地说,列表通常允许成对的元素e1和e2,例如e1.equals(e2) ,并且它们通常允许多个空元素,如果它们完全允许空元素的话。 有人可能希望通过在用户尝试插入时抛出运行时异常来实现禁止重复的列表,这并不是不可想象的,但我们预计这种用法很少见。
该List接口放置额外的约定,超过在Collection指定接口上的iterator,add,remove,equals,并hashCode方法合同。 为方便起见,此处还包括其他继承方法的声明。
List接口提供了四种位置(索引)访问列表元素的方法。 列表(如Java数组)基于零。 请注意,对于某些实现(例如, LinkedList类),这些操作可能在时间上与指数值成比例地执行。 因此,如果调用者不知道实现,遍历列表中的元素通常更适合通过索引进行索引。
List接口提供了一个特殊的迭代器,称为ListIterator ,除了Iterator接口提供的常规操作外,该接口还允许元素插入和替换以及双向访问。 提供了一种方法来获取从列表中的指定位置开始的列表迭代器。
List接口提供了两种搜索指定对象的方法。 从性能角度来看,应谨慎使用这些方法。 在许多实现中,他们将执行昂贵的线性搜索。
List接口提供了两种方法来有效地插入和删除列表中任意点的多个元素。
注意:虽然允许列表将其自身包含为元素,但建议您非常小心: equals和 hashCode方法在这样的列表中不再被很好地定义。
一些列表实现对它们可能包含的元素有限制。 例如,有些实现禁止使用空元素,有些实现对元素类型有限制。 尝试添加不合格的元素会引发未检查的异常,通常为NullPointerException或ClassCastException 。 尝试查询不合格元素的存在可能会引发异常,或者它可能仅返回false; 一些实现将展现前一种行为,一些将展现后者。 更一般地说,尝试对不合格的元素进行操作,其完成不会导致将不合格的元素插入到列表中可能会引发异常,或者可能会成功执行。 这种例外在该接口的规范中被标记为“可选”。
该界面是 Java Collections Framework的成员。
也可以看看:
Public methods |
|
---|---|
abstract boolean |
add(E e) 将指定的元素附加到此列表的末尾(可选操作)。 |
abstract void |
add(int index, E element) 将指定元素插入此列表中的指定位置(可选操作)。 |
abstract boolean |
addAll(Collection<? extends E> c) 按指定集合的迭代器(可选操作)返回的顺序,将指定集合中的所有元素追加到此列表的末尾。 |
abstract boolean |
addAll(int index, Collection<? extends E> c) 将指定集合中的所有元素插入指定位置的此列表中(可选操作)。 |
abstract void |
clear() 从此列表中删除所有元素(可选操作)。 |
abstract boolean |
contains(Object o) 如果此列表包含指定的元素,则返回 true 。 |
abstract boolean |
containsAll(Collection<?> c) 如果此列表包含指定集合的所有元素,则返回 true 。 |
abstract boolean |
equals(Object o) 将指定的对象与此列表进行比较以获得相等性。 |
abstract E |
get(int index) 返回此列表中指定位置的元素。 |
abstract int |
hashCode() 返回此列表的哈希码值。 |
abstract int |
indexOf(Object o) 返回此列表中指定元素第一次出现的索引,如果此列表不包含元素,则返回-1。 |
abstract boolean |
isEmpty() 如果此列表不包含任何元素,则返回 true 。 |
abstract Iterator<E> |
iterator() 以适当的顺序返回此列表中元素的迭代器。 |
abstract int |
lastIndexOf(Object o) 返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。 |
abstract ListIterator<E> |
listIterator(int index) 从列表中的指定位置开始,返回此列表中元素的列表迭代器(以正确的顺序)。 |
abstract ListIterator<E> |
listIterator() 返回此列表中元素的列表迭代器(按适当顺序)。 |
abstract E |
remove(int index) 删除此列表中指定位置的元素(可选操作)。 |
abstract boolean |
remove(Object o) 从列表中删除第一次出现的指定元素(如果存在)(可选操作)。 |
abstract boolean |
removeAll(Collection<?> c) 从此列表中删除指定集合中包含的所有元素(可选操作)。 |
default void |
replaceAll(UnaryOperator<E> operator) 用将运算符应用于该元素的结果替换此列表中的每个元素。 |
abstract boolean |
retainAll(Collection<?> c) 仅保留指定集合中包含的此列表中的元素(可选操作)。 |
abstract E |
set(int index, E element) 用指定的元素替换此列表中指定位置的元素(可选操作)。 |
abstract int |
size() 返回此列表中元素的数量。 |
default void |
sort(Comparator<? super E> c) 使用提供的 |
default Spliterator<E> |
spliterator() 在此列表中的元素上创建一个 |
abstract List<E> |
subList(int fromIndex, int toIndex) 返回指定的 fromIndex (包括 fromIndex )和 toIndex之间的此列表部分的视图,排他。 |
abstract Object[] |
toArray() 以适当的顺序返回一个包含此列表中所有元素的数组(从第一个元素到最后一个元素)。 |
abstract <T> T[] |
toArray(T[] a) 以正确的顺序返回一个包含此列表中所有元素的数组(从第一个元素到最后一个元素); 返回数组的运行时类型是指定数组的运行时类型。 |
Inherited methods |
|
---|---|
From interface java.util.Collection
|
|
From interface java.lang.Iterable
|
boolean add (E e)
将指定的元素附加到此列表的末尾(可选操作)。
支持此操作的列表可能会限制可以将哪些元素添加到此列表中。 特别是,一些列表将拒绝添加空元素,而其他列表将对可能添加的元素的类型施加限制。 列表类应在其文档中明确指定可添加元素的任何限制。
Parameters | |
---|---|
e |
E : element to be appended to this list |
Returns | |
---|---|
boolean |
true (as specified by add(E) ) |
Throws | |
---|---|
UnsupportedOperationException |
if the add operation is not supported by this list |
ClassCastException |
if the class of the specified element prevents it from being added to this list |
NullPointerException |
if the specified element is null and this list does not permit null elements |
IllegalArgumentException |
if some property of this element prevents it from being added to this list |
void add (int index, E element)
将指定元素插入此列表中的指定位置(可选操作)。 将当前位置的元素(如果有的话)和任何后续元素移到右侧(将其中的一个添加到它们的索引)。
Parameters | |
---|---|
index |
int : index at which the specified element is to be inserted |
element |
E : element to be inserted |
Throws | |
---|---|
UnsupportedOperationException |
if the add operation is not supported by this list |
ClassCastException |
if the class of the specified element prevents it from being added to this list |
NullPointerException |
if the specified element is null and this list does not permit null elements |
IllegalArgumentException |
if some property of the specified element prevents it from being added to this list |
IndexOutOfBoundsException |
if the index is out of range (index < 0 || index > size()) |
boolean addAll (Collection<? extends E> c)
按指定集合的迭代器(可选操作)返回的顺序,将指定集合中的所有元素追加到此列表的末尾。 如果在操作过程中修改了指定的集合,则此操作的行为未定义。 (请注意,如果指定的集合是这个列表,并且它是非空的,则会发生这种情况。)
Parameters | |
---|---|
c |
Collection : collection containing elements to be added to this list |
Returns | |
---|---|
boolean |
true if this list changed as a result of the call |
Throws | |
---|---|
UnsupportedOperationException |
if the addAll operation is not supported by this list |
ClassCastException |
if the class of an element of the specified collection prevents it from being added to this list |
NullPointerException |
if the specified collection contains one or more null elements and this list does not permit null elements, or if the specified collection is null |
IllegalArgumentException |
if some property of an element of the specified collection prevents it from being added to this list |
也可以看看:
boolean addAll (int index, Collection<? extends E> c)
将指定集合中的所有元素插入指定位置的此列表中(可选操作)。 将当前在该位置的元素(如果有的话)和随后的元素移到右侧(增加它们的索引)。 新元素将按照它们由指定集合的迭代器返回的顺序出现在此列表中。 如果在操作过程中修改了指定的集合,则此操作的行为未定义。 (请注意,如果指定的集合是这个列表,并且它是非空的,则会发生这种情况。)
Parameters | |
---|---|
index |
int : index at which to insert the first element from the specified collection |
c |
Collection : collection containing elements to be added to this list |
Returns | |
---|---|
boolean |
true if this list changed as a result of the call |
Throws | |
---|---|
UnsupportedOperationException |
if the addAll operation is not supported by this list |
ClassCastException |
if the class of an element of the specified collection prevents it from being added to this list |
NullPointerException |
if the specified collection contains one or more null elements and this list does not permit null elements, or if the specified collection is null |
IllegalArgumentException |
if some property of an element of the specified collection prevents it from being added to this list |
IndexOutOfBoundsException |
if the index is out of range (index < 0 || index > size()) |
void clear ()
从此列表中删除所有元素(可选操作)。 此通话返回后,该列表将为空。
Throws | |
---|---|
UnsupportedOperationException |
if the clear operation is not supported by this list |
boolean contains (Object o)
如果此列表包含指定的元素,则返回true 。 更正式地,返回true当且仅当该列表包含至少一个元素e,例如(o==null ? e==null : o.equals(e)) 。
Parameters | |
---|---|
o |
Object : element whose presence in this list is to be tested |
Returns | |
---|---|
boolean |
true if this list contains the specified element |
Throws | |
---|---|
ClassCastException |
if the type of the specified element is incompatible with this list (optional) |
NullPointerException |
if the specified element is null and this list does not permit null elements (optional) |
boolean containsAll (Collection<?> c)
如果此列表包含指定集合的所有元素,则返回 true 。
Parameters | |
---|---|
c |
Collection : collection to be checked for containment in this list |
Returns | |
---|---|
boolean |
true if this list contains all of the elements of the specified collection |
Throws | |
---|---|
ClassCastException |
if the types of one or more elements in the specified collection are incompatible with this list (optional) |
NullPointerException |
if the specified collection contains one or more null elements and this list does not permit null elements (optional), or if the specified collection is null |
也可以看看:
boolean equals (Object o)
将指定的对象与此列表进行比较以获得相等性。 当且仅当指定的对象也是一个列表时,返回true ,两个列表具有相同的大小,并且两个列表中的所有相应元素对都相等 。 (两个元件e1 e2和如果是等于 (e1==null ? e2==null : e1.equals(e2)))。换句话说,两个列表被定义为等于如果它们包含以相同的顺序相同的元件。 这个定义确保了equals方法在List接口的不同实现中正常工作。
Parameters | |
---|---|
o |
Object : the object to be compared for equality with this list |
Returns | |
---|---|
boolean |
true if the specified object is equal to this list |
E get (int index)
返回此列表中指定位置的元素。
Parameters | |
---|---|
index |
int : index of the element to return |
Returns | |
---|---|
E |
the element at the specified position in this list |
Throws | |
---|---|
IndexOutOfBoundsException |
if the index is out of range (index < 0 || index >= size()) |
int hashCode ()
返回此列表的哈希码值。 列表的哈希码被定义为以下计算的结果:
int hashCode = 1; for (E e : list) hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());This ensures that list1.equals(list2) implies that list1.hashCode()==list2.hashCode() for any two lists, list1 and list2, as required by the general contract of
hashCode()
.
Returns | |
---|---|
int |
the hash code value for this list |
也可以看看:
int indexOf (Object o)
返回此列表中指定元素第一次出现的索引,如果此列表不包含元素,则返回-1。 更正式地说,返回最低索引i,例如(o==null ? get(i)==null : o.equals(get(i))) ,如果没有这样的索引,则返回-1。
Parameters | |
---|---|
o |
Object : element to search for |
Returns | |
---|---|
int |
the index of the first occurrence of the specified element in this list, or -1 if this list does not contain the element |
Throws | |
---|---|
ClassCastException |
if the type of the specified element is incompatible with this list (optional) |
NullPointerException |
if the specified element is null and this list does not permit null elements (optional) |
boolean isEmpty ()
如果此列表不包含任何元素,则返回 true 。
Returns | |
---|---|
boolean |
true if this list contains no elements |
Iterator<E> iterator ()
以适当的顺序返回此列表中元素的迭代器。
Returns | |
---|---|
Iterator<E> |
an iterator over the elements in this list in proper sequence |
int lastIndexOf (Object o)
返回此列表中指定元素的最后一次出现的索引,如果此列表不包含元素,则返回-1。 更正式地说,返回最高索引i,例如(o==null ? get(i)==null : o.equals(get(i))) ,如果没有这样的索引,则返回-1。
Parameters | |
---|---|
o |
Object : element to search for |
Returns | |
---|---|
int |
the index of the last occurrence of the specified element in this list, or -1 if this list does not contain the element |
Throws | |
---|---|
ClassCastException |
if the type of the specified element is incompatible with this list (optional) |
NullPointerException |
if the specified element is null and this list does not permit null elements (optional) |
ListIterator<E> listIterator (int index)
从列表中的指定位置开始,返回此列表中元素的列表迭代器(以正确的顺序)。 指定的索引指示将通过初始调用返回到next
的第一个元素。 初始调用previous
将返回指定索引减1的元素。
Parameters | |
---|---|
index |
int : index of the first element to be returned from the list iterator (by a call to next ) |
Returns | |
---|---|
ListIterator<E> |
a list iterator over the elements in this list (in proper sequence), starting at the specified position in the list |
Throws | |
---|---|
IndexOutOfBoundsException |
if the index is out of range (index < 0 || index > size() ) |
ListIterator<E> listIterator ()
返回此列表中元素的列表迭代器(按适当顺序)。
Returns | |
---|---|
ListIterator<E> |
a list iterator over the elements in this list (in proper sequence) |
E remove (int index)
删除此列表中指定位置的元素(可选操作)。 将任何随后的元素向左移(从其索引中减去一个元素)。 返回从列表中移除的元素。
Parameters | |
---|---|
index |
int : the index of the element to be removed |
Returns | |
---|---|
E |
the element previously at the specified position |
Throws | |
---|---|
UnsupportedOperationException |
if the remove operation is not supported by this list |
IndexOutOfBoundsException |
if the index is out of range (index < 0 || index >= size()) |
boolean remove (Object o)
从列表中删除第一次出现的指定元素(如果存在)(可选操作)。 如果该列表不包含该元素,则不变。 更正式地说,删除索引最低的元素i ,使得(o==null ? get(i)==null : o.equals(get(i))) (如果存在这样的元素)。 如果此列表包含指定的元素(或等同地,如果此列表因呼叫而改变),则返回true 。
Parameters | |
---|---|
o |
Object : element to be removed from this list, if present |
Returns | |
---|---|
boolean |
true if this list contained the specified element |
Throws | |
---|---|
ClassCastException |
if the type of the specified element is incompatible with this list (optional) |
NullPointerException |
if the specified element is null and this list does not permit null elements (optional) |
UnsupportedOperationException |
if the remove operation is not supported by this list |
boolean removeAll (Collection<?> c)
从此列表中删除指定集合中包含的所有元素(可选操作)。
Parameters | |
---|---|
c |
Collection : collection containing elements to be removed from this list |
Returns | |
---|---|
boolean |
true if this list changed as a result of the call |
Throws | |
---|---|
UnsupportedOperationException |
if the removeAll operation is not supported by this list |
ClassCastException |
if the class of an element of this list is incompatible with the specified collection (optional) |
NullPointerException |
if this list contains a null element and the specified collection does not permit null elements (optional), or if the specified collection is null |
也可以看看:
void replaceAll (UnaryOperator<E> operator)
用将运算符应用于该元素的结果替换此列表中的每个元素。 由操作员抛出的错误或运行时异常会传递给调用者。
list
: final ListIterator<E> li = list.listIterator();
while (li.hasNext()) {
li.set(operator.apply(li.next()));
}
If the list's list-iterator does not support the set
operation then an UnsupportedOperationException
will be thrown when replacing the first element.Parameters | |
---|---|
operator |
UnaryOperator : the operator to apply to each element |
Throws | |
---|---|
UnsupportedOperationException |
if this list is unmodifiable. Implementations may throw this exception if an element cannot be replaced or if, in general, modification is not supported |
NullPointerException |
if the specified operator is null or if the operator result is a null value and this list does not permit null elements (optional) |
boolean retainAll (Collection<?> c)
仅保留指定集合中包含的此列表中的元素(可选操作)。 换句话说,从该列表中删除所有未包含在指定集合中的元素。
Parameters | |
---|---|
c |
Collection : collection containing elements to be retained in this list |
Returns | |
---|---|
boolean |
true if this list changed as a result of the call |
Throws | |
---|---|
UnsupportedOperationException |
if the retainAll operation is not supported by this list |
ClassCastException |
if the class of an element of this list is incompatible with the specified collection (optional) |
NullPointerException |
if this list contains a null element and the specified collection does not permit null elements (optional), or if the specified collection is null |
也可以看看:
E set (int index, E element)
用指定的元素替换此列表中指定位置的元素(可选操作)。
Parameters | |
---|---|
index |
int : index of the element to replace |
element |
E : element to be stored at the specified position |
Returns | |
---|---|
E |
the element previously at the specified position |
Throws | |
---|---|
UnsupportedOperationException |
if the set operation is not supported by this list |
ClassCastException |
if the class of the specified element prevents it from being added to this list |
NullPointerException |
if the specified element is null and this list does not permit null elements |
IllegalArgumentException |
if some property of the specified element prevents it from being added to this list |
IndexOutOfBoundsException |
if the index is out of range (index < 0 || index >= size()) |
int size ()
返回此列表中元素的数量。 如果此列表包含多个Integer.MAX_VALUE元素,则返回Integer.MAX_VALUE 。
Returns | |
---|---|
int |
the number of elements in this list |
void sort (Comparator<? super E> c)
使用提供的 Comparator
对此列表进行排序以比较元素。
list
: Collections.sort(list, c)
Parameters | |
---|---|
c |
Comparator : the Comparator used to compare list elements. A null value indicates that the elements' natural ordering should be used |
Throws | |
---|---|
ClassCastException |
if the list contains elements that are not mutually comparable using the specified comparator |
UnsupportedOperationException |
if the list's list-iterator does not support the set operation |
IllegalArgumentException |
(optional) if the comparator is found to violate the Comparator contract |
Spliterator<E> spliterator ()
在此列表中的元素上创建一个 Spliterator
。
Spliterator
报告SIZED
和ORDERED
。 实施应记录附加特征值的报告。
Iterator
. The spliterator inherits the fail-fast properties of the list's iterator.Spliterator
additionally reports SUBSIZED
.Returns | |
---|---|
Spliterator<E> |
a Spliterator over the elements in this list |
List<E> subList (int fromIndex, int toIndex)
返回指定的fromIndex (含)和toIndex之间的此列表部分的视图,不包括。 (如果fromIndex和toIndex相等,则返回的列表为空。)返回的列表由此列表支持,因此返回列表中的非结构更改将反映在此列表中,反之亦然。 返回的列表支持此列表支持的所有可选列表操作。
此方法消除了对显式范围操作(数组通常存在的那种操作)的需要。 任何需要列表的操作都可以通过传递子列表视图而不是整个列表来用作范围操作。 例如,下面的习语从列表中删除了一系列元素:
list.subList(from, to).clear();Similar idioms may be constructed for indexOf and lastIndexOf, and all of the algorithms in the Collections class can be applied to a subList.
如果支持列表(即此列表)在结构上以非返回列表的方式进行了修改 ,则此方法返回的列表的语义变得未定义。 (结构修改是那些改变这个列表的大小,或者以这样一种方式干扰它,以致正在进行的迭代可能产生不正确的结果。)
Parameters | |
---|---|
fromIndex |
int : low endpoint (inclusive) of the subList |
toIndex |
int : high endpoint (exclusive) of the subList |
Returns | |
---|---|
List<E> |
a view of the specified range within this list |
Throws | |
---|---|
IndexOutOfBoundsException |
for an illegal endpoint index value (fromIndex < 0 || toIndex > size || fromIndex > toIndex) |
Object[] toArray ()
以适当的顺序返回一个包含此列表中所有元素的数组(从第一个元素到最后一个元素)。
返回的数组将是“安全的”,因为此列表不会保留对它的引用。 (换句话说,即使列表由数组支持,该方法也必须分配一个新数组)。 调用者可以自由修改返回的数组。
此方法充当基于数组和基于集合的API之间的桥梁。
Returns | |
---|---|
Object[] |
an array containing all of the elements in this list in proper sequence |
也可以看看:
T[] toArray (T[] a)
以正确的顺序返回一个包含此列表中所有元素的数组(从第一个元素到最后一个元素); 返回数组的运行时类型是指定数组的运行时类型。 如果列表符合指定的数组,则返回其中。 否则,将使用指定数组的运行时类型和此列表的大小分配一个新数组。
如果列表符合指定的数组并且有空余空间(即数组的元素多于列表),紧接列表结尾的数组中的元素设置为null 。 ( 仅当调用者知道列表不包含任何空元素时,这对确定列表的长度很有用。)
与toArray()
方法一样,此方法充当基于阵列和基于集合的API之间的桥梁。 此外,该方法允许精确控制输出数组的运行时类型,并且在某些情况下可以用于节省分配成本。
假设x是已知只包含字符串的列表。 以下代码可用于将列表转储到新分配的String数组中:
String[] y = x.toArray(new String[0]);Note that toArray(new Object[0]) is identical in function to toArray().
Parameters | |
---|---|
a |
T : the array into which the elements of this list are to be stored, if it is big enough; otherwise, a new array of the same runtime type is allocated for this purpose. |
Returns | |
---|---|
T[] |
an array containing the elements of this list |
Throws | |
---|---|
ArrayStoreException |
if the runtime type of the specified array is not a supertype of the runtime type of every element in this list |
NullPointerException |
if the specified array is null |