资讯专栏INFORMATION COLUMN

Stack,ArrayDeque,LinkedList的区别

dack / 2089人阅读

摘要:类继承树由继承树看出,三者都是的间接实现类。实现接口,继承于,实现与接口。频繁的插入删除操作频繁的随机访问操作未知的初始数据量

       这段时间把疯狂JAVA再看了一遍,发现Stack,ArrayDeque,LinkedList都可以作为栈使用,所以就稍微从性能以及实现的细节对比这三者的区别。

类继承树


       由继承树看出,三者都是Collection的间接实现类。
       ArrayDeque实现Deque接口,Stack继承于Vector,LinkedList实现Deque与List接口。

区别 底层数据存储方式
  存储方式
Stack 长度为10的数组
ArrayDeque 长度为16的数组
LinkedList 链表
方法参照表
Stack ArrayDeque LinkedList
push(e) addFirst(e)/offerFirst(e) addFirst(e)/offerFirst(e)
pop() removeFirst()/pollFirst() removeFirst()/pollFirst()
peek() getFirst()/peekFirst() getFirst()/peekFirst()
线程安全
  线程安全
Stack 线程同步
ArrayDeque 线程不同步
LinkedList 线程不同步
性能选项

     通常情况下,不推荐使用Vector以及其子类Stack

1.需要线程同步

    使用Collections工具类中synchronizedXxx()将线程不同步的ArrayDeque以及LinkedList转换成线程同步。

2.频繁的插入、删除操作:LinkedList 3.频繁的随机访问操作:ArrayDeque 4.未知的初始数据量:LinkedList

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/74410.html

相关文章

  • java集合-List

    摘要:会死循环,因为栈内不会弹出所以判断会一直执行。集合用于模拟队列这种数据结构,队列通常是指先进先出的容器。集合不仅提供了的功能,还提供了双端队列,栈的功能。如果有多个线程需要访问集合中的元素,需要考虑使用将几个包装成线程安全集合。 List判断两个对象相等只通过equals方法比较返回true即可。 public class A { @Override public ...

    MasonEast 评论0 收藏0
  • Java 集合 Queue

    摘要:除此之外,还有一个接口,代表一个双端队列,双端队列可以同时从两端删除添加元素,因此的实现类既可当成队列使用,也可当成栈使用。相当于栈方法将一个元素进该双端队列所表示的栈的栈顶。 Queue用于模拟队列这种数据结构,队列通常是指先进先出(FIFO)的容器。队列的头部保存在队列中存放时间最长的元素,队列的尾部保存在队列中存放时间最短的元素。新元素插入(offer)到队列的尾部,访问元素(p...

    bang590 评论0 收藏0
  • Java中Queue与Deque

    摘要:最小初始化容量。它作为堆栈队列双端队列的操作和的操作是一致的,只是内部的实现不同。根据元素内容查找和删除的效率比较低,为。但是接口有对应的并发实现类类。 Queue接口的实现类 Queue接口作为队列数据结构,java在实现的时候,直接定义了Deque接口(双端队列)来继承Queue接口,并且只实现Deque接口。这样java中的双端队列就囊括了队列、双端队列、堆栈(Deque接口又定...

    zhangrxiang 评论0 收藏0
  • 源码|jdk源码之栈、队列及ArrayDeque分析

    摘要:栈队列双端队列都是非常经典的数据结构。结合了栈和队列的特点。因此,在中,有栈的使用需求时,使用代替。迭代器之前源码源码之与字段中分析过,容器的实现中,所有修改过容器结构的操作都需要修改字段。 栈、队列、双端队列都是非常经典的数据结构。和链表、数组不同,这三种数据结构的抽象层次更高。它只描述了数据结构有哪些行为,而并不关心数据结构内部用何种思路、方式去组织。本篇博文重点关注这三种数据结构...

    ZHAO_ 评论0 收藏0
  • Java集合总结

    摘要:概述集合类主要有大分支,及。不能保证元素的排列顺序,顺序有可能发生变化不是同步的集合元素可以是但只能放入一个是接口的唯一实现类,可以确保集合元素处于排序状态。如果这两个的通过比较返回,新添加的将覆盖集合中原有的,但不会覆盖。 概述 Java集合类主要有2大分支,Collection及Map。Collection体系如下: https://upload-images.jianshu......

    toddmark 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<