标签:
(1)继承关系
ArrayList和LinkedList都实现了List接口,并都实现了List接口中的列表操作。而LinkedList在此之外,还实现了Deque接口,因此还实现了在列表头尾进行增删查的功能,并提供了统一的方法。所以LinkedList在数据结构上来看,还可以被用作堆栈和队列。
下面是List的接口中可选的列表操作方法,被ArrayList和LinkedList实现(实现部分可选方法):
| boolean add(E e) | 向列表尾部添加指定的元素(可选) |
| void add(int index, E e) | 向列表中的指定位置插入指定元素(可选) |
| boolean addAll(Collection<? extends E> c) | 添加指定collection中的所有元素到此列表的尾部(可选) |
| boolean addAll(int index, Collection<? extends E> c) | 将指定collection中的所有元素都插入到列表中的指定位置(可选) |
| void clear() | 从列表中移除所有元素(可选) |
| E remove(int index) | 移除列表中指定位置的元素(可选操作) |
| boolean remove(Object o) | 从列表中移除第一次出现的指定元素(可选操作) |
| boolean removeAll(Collection<?> c) | 从列表中移除指定collection中包含的其所有元素(可选操作) |
| boolean retainAll(Collection<?> c) | 仅在列表中保留指定collection中所包含的元素(可选操作) |
| E set(int index, E element) | 用指定元素替换列表中指定位置的元素(可选操作) |
Deque中用于首尾位置操作的相关方法,被LinkedList实现:
| void addFirst(E e) | 将指定元素插入此双端队列开头(链表) |
| void addLast(E e) | 将指定元素插入此双端队列的末尾(链表) |
| E getFirst() | 获取,但不移除此双端队列的第一个元素(链表) |
| E getLast() | 获取,但不移除此双端队列的最后一个元素(链表) |
| E removeFirst() | 获取并移除此双端队列第一个元素。(链表) |
| E removeLast() | 获取并移除此双端队列的最后一个元素。(链表) |
| boolean offer(E e) | 将指定元素添加到此双端队列的尾部(队列) |
| boolean offerFirst(E e) | 将指定的元素插入此双端队列的开头(队列) |
| boolean offerLast(E e) | 将指定元素插入此双端队列的尾部(队列) |
| E peek() | 获取,但不移除此双端队列的第一个元素,如果此双端队列为空,则返回 null。(栈) |
| E peekFirst() | 获取,但不移除此双端队列的第一个元素,如果此双端队列为空,则返回 null。(栈) |
| E peekLast() | 获取,但不移除此双端队列的最后一个元素,如果此双端队列为空,则返回 null。(栈) |
| E poll() | 获取并移除此双端队列所表示的队列的头部,如果此双端队列为空,则返回 null。 |
| E pollFirst() | 获取并移除此双端队列的第一个元素;如果此双端队列为空,则返回null。 |
| E pollLast() | 获取并移除此双端队列的最后一个元素;如果此双端队列为空,则返回 null。 |
| E pop() | 从此双端队列所表示的堆栈中弹出一个元素。(栈) |
| void push(E e) | 将一个元素推入此双端队列所表示的堆栈(栈) |
add方法和offer方法在功能上是一样的,只是在操作不同数据结构时的习惯称呼,一般操作链表称谓add,操作队列称谓offer。
(2)同步问题
ArrayList和LinkedList的实现都没有保证同步,如果想要保证同步可以使用 Collections.synchronizeList来包装该"列表”:
List list = Collections.synchronizeList(new LinkedList(...));
标签:
原文地址:http://www.cnblogs.com/liujinyao/p/4723708.html