为什么sonarlint推荐使用Deque而不使用Stack ╰+哭是因爲堅強的太久メ 2023-07-25 09:51 2阅读 0赞 **文章目录:** 1.栈的介绍 2. 栈的应用 3.不推荐使用原因: 4.ArrayDeque介绍 -------------------- ## 1.栈的介绍: ## -------------------- 栈的最基本的特征是LIFO(Last In First Out),因此栈又被称为后进先出的线性表。所以上面采用 LinkedList 实现的栈看起来也非常的简单。虽然简单,但我们并不需要重复的轮子。Java 提供了 Deuqe。Deque 是继承自 Queue,而 Stack 是继承自 Vector。Java 中的 Deuqe,即“double ended queue”的缩写,是 Java 中的双端队列集合类型。Deque 具备普通队列 FIFO 的功能,同时它也具备了 Stack 的 LIFO 功能,并且保留了 push 和 pop 函数,所以使用起来应该是一点障碍都没有。 -------------------- ## 2. 栈的应用: ## -------------------- 1)括号匹配 2)java中程序计数栈和堆栈 3)浏览器已访问历史记录 4)计算后缀表达式 -------------------- ## 3.不推荐使用原因: ## 1)Stack 是 JDK 1.0 中就有的,且它继承自 Vector,Vector 不被推荐使用了 2)vector中加入了synchronized关键字 3)Vector 是由数组实现的集合类,他包含了大量集合处理的方法,stack在基于数组实现上效率低 -------------------- ## 4.ArrayDeque介绍: ## -------------------- ArrayDeque 是 Deque 接口的一种具体实现,是依赖于可变数组来实现的。ArrayDeque 没有容量限制,可根据需求自动进行扩容。ArrayDeque 可以作为栈来使用,效率要高于 Stack。ArrayDeque 也可以作为队列来使用,效率相较于基于双向链表的 LinkedList 也要更好一些。注意,ArrayDeque 不支持为 null 的元素。
还没有评论,来说两句吧...