Most visited

Recently visited

Added in API level 1

List

public interface List
implements Collection<E>

java.util.List<E>
Known Indirect Subclasses


有序集合(也称为序列 )。 该接口的用户可以精确控制每个元素插入到列表中的哪个位置。 用户可以通过整数索引(列表中的位置)访问元素,并搜索列表中的元素。

与集合不同,列表通常允许重复元素。 更正式地说,列表通常允许成对的元素e1e2,例如e1.equals(e2) ,并且它们通常允许多个空元素,如果它们完全允许空元素的话。 有人可能希望通过在用户尝试插入时抛出运行时异常来实现禁止重复的列表,这并不是不可想象的,但我们预计这种用法很少见。

List接口放置额外的约定,超过在Collection指定接口上的iterator,add,remove,equals,hashCode方法合同。 为方便起见,此处还包括其他继承方法的声明。

List接口提供了四种位置(索引)访问列表元素的方法。 列表(如Java数组)基于零。 请注意,对于某些实现(例如, LinkedList类),这些操作可能在时间上与指数值成比例地执行。 因此,如果调用者不知道实现,遍历列表中的元素通常更适合通过索引进行索引。

List接口提供了一个特殊的迭代器,称为ListIterator ,除了Iterator接口提供的常规操作外,该接口还允许元素插入和替换以及双向访问。 提供了一种方法来获取从列表中的指定位置开始的列表迭代器。

List接口提供了两种搜索指定对象的方法。 从性能角度来看,应谨慎使用这些方法。 在许多实现中,他们将执行昂贵的线性搜索。

List接口提供了两种方法来有效地插入和删除列表中任意点的多个元素。

注意:虽然允许列表将其自身包含为元素,但建议您非常小心: equalshashCode方法在这样的列表中不再被很好地定义。

一些列表实现对它们可能包含的元素有限制。 例如,有些实现禁止使用空元素,有些实现对元素类型有限制。 尝试添加不合格的元素会引发未检查的异常,通常为NullPointerExceptionClassCastException 尝试查询不合格元素的存在可能会引发异常,或者它可能仅返回false; 一些实现将展现前一种行为,一些将展现后者。 更一般地说,尝试对不合格的元素进行操作,其完成不会导致将不合格的元素插入到列表中可能会引发异常,或者可能会成功执行。 这种例外在该接口的规范中被标记为“可选”。

该界面是 Java Collections Framework的成员。

也可以看看:

Summary

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)

使用提供的 Comparator对此列表进行排序以比较元素。

default Spliterator<E> spliterator()

在此列表中的元素上创建一个 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

Public methods

add

Added in API level 1
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

add

Added in API level 1
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())

addAll

Added in API level 1
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

也可以看看:

addAll

Added in API level 1
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())

clear

Added in API level 1
void clear ()

从此列表中删除所有元素(可选操作)。 此通话返回后,该列表将为空。

Throws
UnsupportedOperationException if the clear operation is not supported by this list

contains

Added in API level 1
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)

containsAll

Added in API level 1
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

也可以看看:

equals

Added in API level 1
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

get

Added in API level 1
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())

hashCode

Added in API level 1
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

也可以看看:

indexOf

Added in API level 1
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)

isEmpty

Added in API level 1
boolean isEmpty ()

如果此列表不包含任何元素,则返回 true

Returns
boolean true if this list contains no elements

iterator

Added in API level 1
Iterator<E> iterator ()

以适当的顺序返回此列表中元素的迭代器。

Returns
Iterator<E> an iterator over the elements in this list in proper sequence

lastIndexOf

Added in API level 1
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

Added in API level 1
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

Added in API level 1
ListIterator<E> listIterator ()

返回此列表中元素的列表迭代器(按适当顺序)。

Returns
ListIterator<E> a list iterator over the elements in this list (in proper sequence)

remove

Added in API level 1
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())

remove

Added in API level 1
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

removeAll

Added in API level 1
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

也可以看看:

replaceAll

Added in API level 24
void replaceAll (UnaryOperator<E> operator)

用将运算符应用于该元素的结果替换此列表中的每个元素。 由操作员抛出的错误或运行时异常会传递给调用者。

实现要求:
  • The default implementation is equivalent to, for this 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)

retainAll

Added in API level 1
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

也可以看看:

set

Added in API level 1
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())

size

Added in API level 1
int size ()

返回此列表中元素的数量。 如果此列表包含多个Integer.MAX_VALUE元素,则返回Integer.MAX_VALUE

Returns
int the number of elements in this list

sort

Added in API level 24
void sort (Comparator<? super E> c)

使用提供的 Comparator对此列表进行排序以比较元素。

实现要求:
  • The default implementation is equivalent to, for this 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

Spliterator<E> spliterator ()

在此列表中的元素上创建一个 Spliterator

Spliterator报告SIZEDORDERED 实施应记录附加特征值的报告。

实现要求:
  • The default implementation creates a late-binding spliterator from the list's Iterator. The spliterator inherits the fail-fast properties of the list's iterator.
Implementation Note:
  • The created Spliterator additionally reports SUBSIZED.
Returns
Spliterator<E> a Spliterator over the elements in this list

subList

Added in API level 1
List<E> subList (int fromIndex, 
                int toIndex)

返回指定的fromIndex (含)和toIndex之间的此列表部分的视图,不包括。 (如果fromIndextoIndex相等,则返回的列表为空。)返回的列表由此列表支持,因此返回列表中的非结构更改将反映在此列表中,反之亦然。 返回的列表支持此列表支持的所有可选列表操作。

此方法消除了对显式范围操作(数组通常存在的那种操作)的需要。 任何需要列表的操作都可以通过传递子列表视图而不是整个列表来用作范围操作。 例如,下面的习语从列表中删除了一系列元素:

      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)

toArray

Added in API level 1
Object[] toArray ()

以适当的顺序返回一个包含此列表中所有元素的数组(从第一个元素到最后一个元素)。

返回的数组将是“安全的”,因为此列表不会保留对它的引用。 (换句话说,即使列表由数组支持,该方法也必须分配一个新数组)。 调用者可以自由修改返回的数组。

此方法充当基于数组和基于集合的API之间的桥梁。

Returns
Object[] an array containing all of the elements in this list in proper sequence

也可以看看:

toArray

Added in API level 1
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

Hooray!