ArrayList和LinkedList比较

(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(...)); 

转载于:https://www.cnblogs.com/liujinyao/p/4723708.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值