stack deque queue
Stack 的主要方法:
push(E item)
: 将元素压入栈顶pop()
: 移除并返回栈顶元素peek()
: 查看栈顶元素但不移除empty()
: 检查栈是否为空search(Object o)
: 返回元素到栈顶的距离
Deque 用作栈时的等效方法:
push(E item)
: 将元素压入栈顶pop()
: 移除并返回栈顶元素peek()
: 查看栈顶元素但不移除isEmpty()
: 检查是否为空
Deque 特有的双端操作:
addFirst(E e)
: 在头部添加元素addLast(E e)
: 在尾部添加元素peekFirst()
: 查看头部元素peekLast()
: 查看尾部元素pollFirst()
: 移除并返回头部元素pollLast()
: 移除并返回尾部元素
使用建议
-
优先选择 Deque:
- 更灵活的 API
- 更好的性能
- 现代集合框架设计
-
具体实现类选择:
ArrayDeque
: 大多数情况下的最佳选择LinkedList
: 需要频繁的插入/删除操作时
-
线程安全需求:
- 如果需要线程安全,使用
Collections.synchronizedDeque()
或ConcurrentLinkedDeque
- 避免使用
Stack
类,即使它是线程安全的
- 如果需要线程安全,使用
-
性能考虑:
ArrayDeque
通常比Stack
性能更好ArrayDeque
不需要同步开销ArrayDeque
内部使用循环数组实现,空间利用率更高