E
-此列表中的元素的类型
public interface List<E> extends Collection<E>
与设置不同的是,列表通常允许重复元素。更正式,通常允许列表元素e1和e2这样e1.equals(e2)对,他们通常允许多个null元素是否允许null元素在所有。这并不是不可想象的,有人可能希望实现一个禁止重复的列表,通过抛出运行时异常,当用户试图插入它们,但我们希望这种用法是罕见的。
List接口的地方补充规定,超越那些在Collection指定界面,对iterator,合同add,remove,equals,和hashCode方法。为方便起见,也包括其他继承方法的声明。
的List接口提供位置的四种方法(索引)访问列表元素。列表(如java数组)是零基础。请注意,这些操作可能在时间段实现指标值的比例执行(例如LinkedList类)。因此,在一个列表中的元素进行迭代,通常是最好的索引通过它如果调用者不了解实现。
的List接口提供了一个特殊的迭代器,称为ListIterator,允许元素的插入和替换,而且除了正常的操作双向接入,Iterator接口提供。提供了一种方法,以获得在列表中的指定位置开始的列表迭代器。
的List接口提供搜索指定对象的两种方法。从性能的角度来看,这些方法应谨慎使用。在许多实现中,他们将执行昂贵的线性搜索。
的List接口提供高效插入和删除列表中的任意一点的多元素的方法。
注:虽然这是列表包含自己为元素允许的,极端的谨慎建议:“equals和hashCode方法是在这样一个列表不再明确。
一些列表实现对它们可能包含的元素有限制。例如,一些实现禁止空元素,并且一些实现对它们的元素的类型有限制。试图插入一个不合适的元素会抛出未检查异常,通常NullPointerException或ClassCastException。试图查询一个不合适的元素的存在可能会抛出一个异常,也可能返回false;有些实现会表现出以前的行为和表现出后者。更普遍的是,试图在一个不合格的操作元素的完成将不会导致一个不合适的元素插入到列表可能抛出一个异常,也可能是成功的,在实施期权。这样的异常被标记为“可选”在该接口的规范中。
该接口的 Java Collections Framework成员。
Modifier and Type | Method and Description |
---|---|
boolean |
add(E e)
将指定的元素到这个列表的末尾(可选操作)。
|
void |
add(int index, E element)
在列表中指定的位置上插入指定的元素(可选操作)。
|
boolean |
addAll(Collection<? extends E> c)
追加指定集合的所有元素到这个列表的末尾,按他们的指定集合的迭代器返回(可选操作)。
|
boolean |
addAll(int index, Collection<? extends E> c)
将指定的集合中的所有元素插入到指定位置的列表中(可选操作)。
|
void |
clear()
从这个列表中移除所有的元素(可选操作)。
|
boolean |
contains(Object o)
返回
true如果这个列表包含指定元素。
|
boolean |
containsAll(Collection<?> c)
返回
true如果这个列表包含指定集合的所有元素。
|
boolean |
equals(Object o)
将指定的对象与此列表进行比较,以进行相等性。
|
E |
get(int index)
返回此列表中指定位置的元素。
|
int |
hashCode()
返回此列表的哈希代码值。
|
int |
indexOf(Object o)
返回此列表中指定元素的第一个出现的索引,或-如果此列表不包含元素,或- 1。
|
boolean |
isEmpty()
返回
true如果此列表不包含元素。
|
Iterator<E> |
iterator()
在这个列表中的元素上返回一个正确的顺序。
|
int |
lastIndexOf(Object o)
返回此列表中指定元素的最后一个发生的索引,或-如果此列表不包含元素,或- 1。
|
ListIterator<E> |
listIterator()
返回列表元素的列表迭代器(在适当的顺序)。
|
ListIterator<E> |
listIterator(int index)
在列表中的元素上返回列表迭代器(在适当的顺序),从列表中的指定位置开始。
|
E |
remove(int index)
移除此列表中指定位置的元素(可选操作)。
|
boolean |
remove(Object o)
从该列表中移除指定元素的第一个发生,如果它是存在的(可选操作)。
|
boolean |
removeAll(Collection<?> c)
从这个列表中移除包含在指定集合中的所有元素(可选操作)。
|
default void |
replaceAll(UnaryOperator<E> operator)
用将运算符应用到该元素的结果替换此列表中的每个元素。
|
boolean |
retainAll(Collection<?> c)
仅保留包含在指定集合中的列表中的元素(可选操作)。
|
E |
set(int index, E element)
用指定元素替换此列表中指定位置的元素(可选操作)。
|
int |
size()
返回此列表中元素的数目。
|
default void |
sort(Comparator<? super E> c)
分类列表使用提供的
Comparator 比较元素。
|
default Spliterator<E> |
spliterator()
创建此列表中的元素的
Spliterator 。
|
List<E> |
subList(int fromIndex, int toIndex)
返回一个视图之间的指定
fromIndex,包容,和
toIndex这份名单的部分,独家。
|
Object[] |
toArray()
返回一个数组,包含在这个列表中的所有元素在适当的顺序(从第一个到最后一个元素)。
|
<T> T[] |
toArray(T[] a)
返回一个数组,包含在这个列表中的所有元素在适当的顺序(从第一到最后一个元素);返回数组的运行时类型是指定的数组的运行时类型。
|
parallelStream, removeIf, stream
int size()
size
接口
Collection<E>
boolean isEmpty()
isEmpty
接口
Collection<E>
boolean contains(Object o)
contains
接口
Collection<E>
o
列表中存在的元素进行测试
ClassCastException
-如果指定元素的类型与此列表不兼容(
optional)
NullPointerException
-如果指定元素为null,这个列表不允许null元素(
optional)
Object[] toArray()
返回的数组将是“安全”的,在这个列表中没有引用它的引用。换句话说,这种方法必须分配一个新的数组,即使这个列表是由一个数组的支持。因此,调用方可以自由修改返回的数组。
此方法作为基于数组和基于集合的原料药之间的桥梁。
toArray
接口
Collection<E>
Arrays.asList(Object[])
<T> T[] toArray(T[] a)
如果列表可以指定数组中剩余的空间(即数组比列表元素),在数组列表结束后立即的元素设置为null。(这是有用的在确定的名单只有长度如果调用者知道列表不包含null元素。)
像toArray()
方法,该方法作为之间的桥梁,基于阵列和基于集合API。此外,该方法允许对输出数组的运行时类型的精确控制,并在某些情况下,可用于节省分配成本。
假设是已知x列表只包含字符串。下面的代码可以用来把列表到新分配的数组String:
String[] y = x.toArray(new String[0]);
注意
toArray(new Object[0])是相同的功能,
toArray()。
toArray
接口
Collection<E>
T
-数组的运行时类型包含集合
a
-到这个列表的元素被存储数组,如果它足够大;否则,一个新的运行时类型相同的数组分配给这个目的。
ArrayStoreException
-如果指定数组的运行时类型不是超此列表中每个元素运行时类型
NullPointerException
-如果指定的数组是空的
boolean add(E e)
支持此操作的列表可能会将哪些元素添加到该列表中的限制。特别是,一些列表将拒绝添加空元素,而其他人将对可能添加的元素的类型施加限制。列表类应该清楚地在他们的文档中指定任何可能添加的元素的限制。
add
接口
Collection<E>
e
元素附加到列表
Collection.add(E)
指定)
UnsupportedOperationException
-如果
add操作不该列表支持
ClassCastException
-如果指定元素类型阻止其加入列表
NullPointerException
-如果指定元素为null,这个列表不允许null元素
IllegalArgumentException
-如果该元素的一些特性阻止其加入列表
boolean remove(Object o)
remove
接口
Collection<E>
o
元要从列表中删除,如果存在
ClassCastException
-如果指定元素的类型与此列表不兼容(
optional)
NullPointerException
-如果指定元素为null,这个列表不允许null元素(
optional)
UnsupportedOperationException
-如果
remove操作不该列表支持
boolean containsAll(Collection<?> c)
containsAll
接口
Collection<E>
c
收集来检查列表是否包含的
ClassCastException
-如果指定集合的一个或多个元素的类型与此列表不相容(
optional)
NullPointerException
-如果指定集合包含一个或多个null元素而列表不允许null元素(
optional),或者指定集合为空
contains(Object)
boolean addAll(Collection<? extends E> c)
addAll
接口
Collection<E>
c
收集含有的元素被添加到列表
UnsupportedOperationException
-如果
addAll操作不该列表支持
ClassCastException
-如果指定集合的元素的类,防止它被添加到列表
NullPointerException
-如果指定集合包含一个或多个null元素而列表不允许null元素,或者指定集合为空
IllegalArgumentException
-如果指定集合的一个元素的一些特性阻止其加入列表
add(Object)
boolean addAll(int index, Collection<? extends E> c)
index
指数,从指定集合的第一个元素的插入
c
收集含有的元素被添加到列表
UnsupportedOperationException
-如果
addAll操作不该列表支持
ClassCastException
-如果指定集合的元素的类,防止它被添加到列表
NullPointerException
-如果指定集合包含一个或多个null元素而列表不允许null元素,或者指定集合为空
IllegalArgumentException
-如果指定集合的一个元素的一些特性阻止其加入列表
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index > size())
boolean removeAll(Collection<?> c)
removeAll
接口
Collection<E>
c
收集含有元素被从列表中删除
UnsupportedOperationException
-如果
removeAll操作不该列表支持
ClassCastException
-如果该列表元素的类与集合不相容(
optional)
NullPointerException
-如果此列表包含一个null元素而指定集合不允许null元素(
optional),或者指定集合为空
remove(Object)
,
contains(Object)
boolean retainAll(Collection<?> c)
retainAll
接口
Collection<E>
c
收集含有元素被保留在这个列表
UnsupportedOperationException
-如果
retainAll操作不该列表支持
ClassCastException
-如果该列表元素的类与集合不相容(
optional)
NullPointerException
-如果此列表包含一个null元素而指定集合不允许null元素(
optional),或者指定集合为空
remove(Object)
,
contains(Object)
default void replaceAll(UnaryOperator<E> operator)
list
:
final ListIterator<E> li = list.listIterator();
while (li.hasNext()) {
li.set(operator.apply(li.next()));
}
如果列表的列表迭代器不支持
set
操作然后
UnsupportedOperationException
会被取代的第一个元素时。
operator
-操作适用于每一个元素
UnsupportedOperationException
-如果这个列表是不可修改的。实现可能会抛出这个异常,如果一个元素不能被替换或如果,在一般情况下,修改不支持
NullPointerException
-如果操作的结果是一个空值,这个列表不允许null元素指定的操作员是null或(
optional)
default void sort(Comparator<? super E> c)
Comparator
比较元素。
list
:
集合排序(列表,C)
c
用来比较列表元素的
Comparator
。一个
null
值表示元素的
natural ordering应使用
ClassCastException
-如果列表包含不相互比较使用指定的比较器元件
UnsupportedOperationException
-如果列表的列表迭代器不支持
set
操作
IllegalArgumentException
-(
optional)如果比较器被发现违反
Comparator
合同
void clear()
clear
接口
Collection<E>
UnsupportedOperationException
-如果
clear操作不该列表支持
boolean equals(Object o)
equals
接口
Collection<E>
equals
方法重写,继承类
Object
o
-同当前列表比较相等性的对象
Object.hashCode()
,
HashMap
int hashCode()
int hashCode = 1;
for (E e : list)
hashCode = 31*hashCode + (e==null ? 0 : e.hashCode());
这确保
list1.equals(list2)意味着
list1.hashCode()==list2.hashCode()任何两个列表,
list1和
list2,由
Object.hashCode()
一般合同要求。
hashCode
接口
Collection<E>
hashCode
方法重写,继承类
Object
Object.equals(Object)
,
equals(Object)
E get(int index)
index
索引元素的回归
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index >= size())
E set(int index, E element)
index
索引的元素代替
element
元素被存储在指定的位置
UnsupportedOperationException
-如果
set操作不该列表支持
ClassCastException
-如果指定元素类型阻止其加入列表
NullPointerException
-如果指定元素为null,这个列表不允许null元素
IllegalArgumentException
-如果指定元素的一些特性阻止其加入列表
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index >= size())
void add(int index, E element)
index
指数在指定的元素被插入
element
元素被插入
UnsupportedOperationException
-如果
add操作不该列表支持
ClassCastException
-如果指定元素类型阻止其加入列表
NullPointerException
-如果指定元素为null,这个列表不允许null元素
IllegalArgumentException
-如果指定元素的一些特性阻止其加入列表
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index > size())
E remove(int index)
index
-要被删除的元素的索引
UnsupportedOperationException
-如果
remove操作不该列表支持
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index >= size())
int indexOf(Object o)
o
元搜索
ClassCastException
-如果指定元素的类型与此列表不兼容(
optional)
NullPointerException
-如果指定元素为null,这个列表不允许null元素(
optional)
int lastIndexOf(Object o)
o
元搜索
ClassCastException
-如果指定元素的类型与此列表不兼容(
optional)
NullPointerException
-如果指定元素为null,这个列表不允许null元素(
optional)
ListIterator<E> listIterator()
ListIterator<E> listIterator(int index)
index
索引的第一个元素是列表迭代器返回(通过调用
next
)
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index > size()
)
List<E> subList(int fromIndex, int toIndex)
此方法消除了对显式范围操作(通常用于数组的排序)的需要。任何希望将列表作为一系列操作通过一个子视图而不是整个列表。例如,下面的成语从列表中移除了一系列元素:
list.subList(from, to).clear();
相似的习语可以构造
indexOf和
lastIndexOf,和所有在
Collections类算法可以应用到列表。
列表的语义,该方法返回的是如果支持列表(即,这个列表)是通过返回的列表结构改性以外的其他任何方式。(结构上的修改是指改变这个名单,大小或其他方式,迭代的进展可能会产生不正确的结果。)
fromIndex
低端点(含)的子列表
toIndex
高端点(独家)的子列表
IndexOutOfBoundsException
-非法终点指标值(
fromIndex < 0 || toIndex > size || fromIndex > toIndex)
default Spliterator<E> spliterator()
Spliterator
。
报告的Spliterator
Spliterator.SIZED
和Spliterator.ORDERED
。实现应该记录额外的特征值的报告。
spliterator
接口
Collection<E>
spliterator
接口
Iterable<E>
Iterator
后期绑定spliterator。的spliterator继承快速失败属性的列表的迭代器。
Spliterator
另外报道
Spliterator.SUBSIZED
。
Spliterator
Submit a bug or feature
For further API reference and developer documentation, see Java SE Documentation. That documentation contains more detailed, developer-targeted descriptions, with conceptual overviews, definitions of terms, workarounds, and working code examples.
Copyright © 1993, 2014, Oracle and/or its affiliates. All rights reserved.