Java双向队列Deque栈与队列


Java中实际上提供了java.util.Stack来实现栈结构,但官方目前已不推荐使用,而是使用java.util.Deque双端队列来实现队列与栈的各种需求.如下图所示java.util.Deque的实现子类有java.util.LinkedList和java.util.ArrayDeque.顾名思义前者是基于链表,后者基于数据实现的双端队列.

要讲栈和队列,首先要讲Deque接口。Deque的含义是“double ended queue”,即双端队列,它既可以当作栈使用,也可以当作队列使用。下表列出了Deque与Queue相对应的接口:

下表列出了Deque与Stack对应的接口:

(转载自)[https://blog.csdn.net/u013967628/article/details/85210036]

ArrayDeque与LinkedList

ArrayDeque与LinkedList都实现了Deque接口,其都是线程不安全的,当我们需要线程同步时,可以使用Collections工具类中synchronizedXxx()将线程不同步的ArrayDeque以及LinkedList转换成线程同步。

区别:

1.底层数据结构不同,ArrayDeque是基于数组,LinkedList是基于链表,ArrayDeque默认长度为16,当容量不够需要扩容(两倍),其扩容很费时间(需要复制原数组到新数组)。所以未知数据量,尽量使用LinkedList

2.ArrayDeque适合频繁访问,LinkedList适合频繁删除


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM