ArrayDeque、Stack
区别
底层数据存储方式
|
存储方式 |
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