zoukankan      html  css  js  c++  java
  • 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(...)); 

  • 相关阅读:
    继承
    iOS 适配暗黑模式
    【C++ STL】容器的选择
    纳税相关
    SwiftUI状态绑定:@State
    python 中各种容器可以容纳的数据类型
    open GL 在使用材质属性glMaterial设置物体颜色效果时,使用shader和使用固定管线后颜色区别
    做为一名测试工程师,你经常会用到或听到的那些工具
    推荐一款技术人必备的接口测试神器:Apifox
    测试管理工具推荐
  • 原文地址:https://www.cnblogs.com/liujinyao/p/4723708.html
Copyright © 2011-2022 走看看