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

  • 相关阅读:
    般若与慈悲
    四谛
    Mysql:8.0.19:新特性、过期、已经删除的
    Mysql:As of 8.0.16:--validate-config:新增的服务器配置验证特效:good!
    Mysql:FIPS:Federal Information Processing Standards 140-2:世上有不透风的墙么?!
    ASP.NET Core WebApi使用Swagger生成API说明文档【xml注释版】
    ASP.NET Core WebApi使用Swagger生成API说明文档【特性版】
    Idea导入Eclipse的Web项目并部署到Tomcat
    在.Net中使用RedLock实现分布式锁
    【转】在C#中使用Json.Net进行序列化和反序列化及定制化
  • 原文地址:https://www.cnblogs.com/liujinyao/p/4723708.html
Copyright © 2020-2023  润新知