E
-元素举行此集合中的类型
public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, Serializable
List
和
Deque
接口。实现了所有的可选列表操作,并允许所有元素(包括
null
)。
所有的操作执行,如可以预期的双链接列表。将索引到列表中的操作将遍历从开始或结束的列表,无论哪个更接近指定的索引。
请注意,此实现不同步。如果多个线程访问一个链接列表的同时,并至少有一个线程修改表结构,它必须同步外部。(结构上的修改是任何操作,添加或删除一个或多个元素;只设置一个元素的值是不是一个结构上的修改。)这通常是由一些对象同步自然封装的清单来完成。如果该对象不存在,该清单应“包装”使用Collections.synchronizedList
方法。最好的做法是在创建时,防止意外的非同步访问列表:
列表的集合。synchronizedlist(新的链表(…));
迭代器返回这个类的iterator
和listIterator
方法快速失败:如果列表迭代器结构改性后创建的任何时间,以任何方式除了通过迭代器的remove
或add
方法,迭代器将抛出一个ConcurrentModificationException
。因此,在并发修改的面前,迭代器失败迅速和干净,而不是冒着任意的,非确定性的行为在未来的一个不确定的时间。
注意迭代器不能快速失败行为得到保证的话,一般来说,不可能在不同步的并发修改的存在作出难以保证。快速失败迭代器扔ConcurrentModificationException
尽最大努力的基础上。因此,要写一个程序,依靠这一例外的正确性错误:快速失败迭代器的行为只能用来检测错误。
这个班的一员 Java Collections Framework。
List
,
ArrayList
,
Serialized Form
modCount
Constructor and Description |
---|
LinkedList()
构造一个空列表。
|
LinkedList(Collection<? extends E> c)
构造一个包含指定集合的元素的列表,它们在集合的迭代器返回的顺序中返回。
|
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 |
addFirst(E e)
在此列表的开始处插入指定的元素。
|
void |
addLast(E e)
将指定的元素列表的结束。
|
void |
clear()
从这个列表中移除所有的元素。
|
Object |
clone()
返回该
LinkedList 浅拷贝。
|
boolean |
contains(Object o)
返回
true 如果这个列表包含指定元素。
|
Iterator<E> |
descendingIterator()
返回在反向顺序在deque容器元素的迭代器。
|
E |
element()
检索,但不删除,此列表的头(第一个元素)。
|
E |
get(int index)
返回此列表中指定位置的元素。
|
E |
getFirst()
返回此列表中的第一个元素。
|
E |
getLast()
返回此列表中的最后一个元素。
|
int |
indexOf(Object o)
返回此列表中指定元素的第一个出现的索引,或-如果此列表不包含元素,或- 1。
|
int |
lastIndexOf(Object o)
返回此列表中指定元素的最后一个发生的索引,或-如果此列表不包含元素,或- 1。
|
ListIterator<E> |
listIterator(int index)
返回此列表中元素的列表迭代器(在适当的顺序),从列表中的指定位置开始。
|
boolean |
offer(E e)
将指定的元素添加到列表的尾部(最后一个元素)。
|
boolean |
offerFirst(E e)
在列表的前面插入指定的元素。
|
boolean |
offerLast(E e)
在列表的结尾插入指定的元素。
|
E |
peek()
检索,但不删除,此列表的头(第一个元素)。
|
E |
peekFirst()
检索,但不删除该列表的第一个元素,或返回
null 如果这个列表是空的。
|
E |
peekLast()
检索,但不删除该列表的最后一个元素,或返回
null 如果这个列表是空的。
|
E |
poll()
检索并删除此列表的头(第一个元素)。
|
E |
pollFirst()
检索并移除此列表的第一个元素,或返回
null 如果这个列表是空的。
|
E |
pollLast()
检索并移除此列表的最后一个元素,或返回
null 如果这个列表是空的。
|
E |
pop()
从这个列表所表示的堆栈中弹出一个元素。
|
void |
push(E e)
将一个元素推到由该列表所表示的堆栈上。
|
E |
remove()
检索并删除此列表的头(第一个元素)。
|
E |
remove(int index)
移除此列表中指定位置的元素。
|
boolean |
remove(Object o)
从该列表中移除指定元素的第一个发生,如果它是存在的。
|
E |
removeFirst()
移除并返回此列表中的第一个元素。
|
boolean |
removeFirstOccurrence(Object o)
删除此列表中指定元素的第一个出现(当遍历从头到尾的列表)。
|
E |
removeLast()
移除并返回此列表中的最后一个元素。
|
boolean |
removeLastOccurrence(Object o)
删除此列表中指定元素的最后一次(当遍历从头到尾的列表时)。
|
E |
set(int index, E element)
用指定元素替换此列表中指定位置的元素。
|
int |
size()
返回此列表中元素的数目。
|
Spliterator<E> |
spliterator()
创建一个后期绑定和快速失败
Spliterator 超过此列表中的元素。
|
Object[] |
toArray()
返回一个数组,包含在这个列表中的所有元素在适当的顺序(从第一个到最后一个元素)。
|
<T> T[] |
toArray(T[] a)
返回一个数组,包含在这个列表中的所有元素在适当的顺序(从第一到最后一个元素);返回数组的运行时类型是指定的数组的运行时类型。
|
iterator
equals, hashCode, listIterator, removeRange, subList
containsAll, isEmpty, removeAll, retainAll, toString
finalize, getClass, notify, notifyAll, wait, wait, wait
containsAll, equals, hashCode, isEmpty, iterator, listIterator, removeAll, replaceAll, retainAll, sort, subList
parallelStream, removeIf, stream
public LinkedList()
public LinkedList(Collection<? extends E> c)
c
的元素都被放置到这个名单的收集
NullPointerException
-如果指定集合为空
public E getFirst()
getFirst
接口
Deque<E>
NoSuchElementException
-如果这个列表是空的
public E getLast()
getLast
接口
Deque<E>
NoSuchElementException
-如果这个列表是空的
public E removeFirst()
removeFirst
接口
Deque<E>
NoSuchElementException
-如果这个列表是空的
public E removeLast()
removeLast
接口
Deque<E>
NoSuchElementException
-如果这个列表是空的
public boolean contains(Object o)
true
如果这个列表包含指定元素。更正式地说,返回
true
当且仅当该列表包含至少一个元素
e
这样
(o==null ? e==null : o.equals(e))。
public int size()
public boolean add(E e)
这种方法相当于addLast(E)
。
public boolean remove(Object o)
i
元素(如元素的存在)。返回
true
如果此列表中指定的元素(或等价地,如果调用的结果列表中更改)。
public boolean addAll(Collection<? extends E> c)
addAll
接口
Collection<E>
addAll
接口
List<E>
addAll
方法重写,继承类
AbstractCollection<E>
c
收集含有的元素被添加到列表
true
如果调用的结果列表中改变
NullPointerException
-如果指定集合为空
AbstractCollection.add(Object)
public boolean addAll(int index, Collection<? extends E> c)
addAll
接口
List<E>
addAll
方法重写,继承类
AbstractSequentialList<E>
index
指数,从指定集合的第一个元素的插入
c
收集含有的元素被添加到列表
true
如果调用的结果列表中改变
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index > size())
NullPointerException
-如果指定集合为空
public void clear()
clear
接口
Collection<E>
clear
接口
List<E>
clear
方法重写,继承类
AbstractList<E>
public E get(int index)
get
接口
List<E>
get
方法重写,继承类
AbstractSequentialList<E>
index
索引元素的回归
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index >= size())
public E set(int index, E element)
set
接口
List<E>
set
方法重写,继承类
AbstractSequentialList<E>
index
索引的元素代替
element
元素被存储在指定的位置
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index >= size())
public void add(int index, E element)
add
接口
List<E>
add
方法重写,继承类
AbstractSequentialList<E>
index
指数在指定的元素被插入
element
元素被插入
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index > size())
public E remove(int index)
remove
接口
List<E>
remove
方法重写,继承类
AbstractSequentialList<E>
index
-要被删除的元素的索引
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index >= size())
public int indexOf(Object o)
i
指数最低,
(o==null ? get(i)==null : o.equals(get(i))),或1,如果没有这样的指标。
public int lastIndexOf(Object o)
i
这样
(o==null ? get(i)==null : o.equals(get(i))),或1,如果没有这样的指标。
lastIndexOf
接口
List<E>
lastIndexOf
方法重写,继承类
AbstractList<E>
o
元搜索
public E peek()
public E element()
public E poll()
public E remove()
public boolean offer(E e)
public boolean offerFirst(E e)
offerFirst
接口
Deque<E>
e
-元素的插入
true
(由
Deque.offerFirst(E)
指定)
public boolean offerLast(E e)
offerLast
接口
Deque<E>
e
-元素的插入
true
(由
Deque.offerLast(E)
指定)
public E peekFirst()
null
如果这个列表是空的。
public E peekLast()
null
如果这个列表是空的。
public E pollFirst()
null
如果这个列表是空的。
public E pollLast()
null
如果这个列表是空的。
public void push(E e)
这种方法相当于addFirst(E)
。
public E pop()
这种方法相当于removeFirst()
。
pop
接口
Deque<E>
NoSuchElementException
-如果这个列表是空的
public boolean removeFirstOccurrence(Object o)
removeFirstOccurrence
接口
Deque<E>
o
元要从列表中删除,如果存在
true
如果列表包含指定元素
public boolean removeLastOccurrence(Object o)
removeLastOccurrence
接口
Deque<E>
o
元要从列表中删除,如果存在
true
如果列表包含指定元素
public ListIterator<E> listIterator(int index)
List.listIterator(int)
一般合同。
列表迭代器是快速失败:如果列表迭代器结构改性后创建的任何时间,以任何方式除了通过列表迭代器的remove
或add
方法,列表迭代器将抛出一个ConcurrentModificationException
。因此,在并发修改的面前,迭代器失败迅速和干净,而不是冒着任意的,非确定性的行为在未来的一个不确定的时间。
listIterator
接口
List<E>
listIterator
方法重写,继承类
AbstractSequentialList<E>
index
索引的第一个元素是列表迭代器返回(通过调用
next
)
IndexOutOfBoundsException
如果索引超出范围(
index < 0 || index > size()
)
List.listIterator(int)
public Iterator<E> descendingIterator()
Deque
descendingIterator
接口
Deque<E>
public Object clone()
LinkedList
浅拷贝。(这些元素本身没有被克隆。)
public Object[] toArray()
返回的数组将是“安全”的,在这个列表中没有引用它的引用。(换句话说,这种方法必须分配一个新的数组)。因此,调用方可以自由修改返回的数组。
此方法作为基于数组和基于集合的原料药之间的桥梁。
toArray
接口
Collection<E>
toArray
接口
List<E>
toArray
方法重写,继承类
AbstractCollection<E>
Arrays.asList(Object[])
public <T> T[] toArray(T[] a)
如果列表可以指定数组中剩余的空间(即数组比列表元素),在数组列表结束后立即的元素设置为null
。(这是有用的在确定的名单只有长度如果调用者知道列表不包含任何无效的元素。)
像toArray()
方法,该方法作为之间的桥梁,基于阵列和基于集合API。此外,该方法允许对输出数组的运行时类型的精确控制,并在某些情况下,可用于节省分配成本。
假设是已知x
列表只包含字符串。下面的代码可以用来把列表到新分配的数组String
:
字符串[] y = x.toarray(新弦[ 0 ]);注意
toArray(new Object[0])
是相同的功能,
toArray()
。
toArray
接口
Collection<E>
toArray
接口
List<E>
toArray
方法重写,继承类
AbstractCollection<E>
T
-数组的运行时类型包含集合
a
-到列表的元素被存储数组,如果它足够大;否则,一个新的运行时类型相同的数组分配给这个目的。
ArrayStoreException
-如果指定数组的运行时类型不是超此列表中每个元素运行时类型
NullPointerException
-如果指定的数组是空的
public Spliterator<E> spliterator()
Spliterator
超过此列表中的元素。
报告的Spliterator
Spliterator.SIZED
和Spliterator.ORDERED
。重写实现应记录附加特征值的报告。
spliterator
接口
Iterable<E>
spliterator
接口
Collection<E>
spliterator
接口
List<E>
Spliterator
Spliterator.SUBSIZED
实现
trySplit
允许有限的并行..
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.