Java之Stack和ArrayDeque区别说明
下文笔者讲述Stack和ArrayDeque的区别,如下所示
Stack和ArrayDeque简介
Java中Stack和ArrayDeque都实现栈(Stack)数据结构
Stack继承自Vector类
Stack是一个基于数组实现的栈
Stack中常用方法有push(压栈)、pop(弹栈)
peek(返回栈顶元素但不弹出)、empty(判断栈是否为空)
search(查找元素在栈中的位置)等
ArrayDeque是
Java集合框架中的一个双端队列(Deque)实现类
支持在队列的两端进行添加、删除、获取等操作
ArrayDeque是一个用循环数组实现的栈和队列集合类
底层结构使用一个循环数组(不需要进行扩容)
Stack和ArrayDeque区别
Stack在操作时 会进行线程同步 所以Stack线程安全 但是效率比较低; 而ArrayDeque不进行线程同步 所以线程不安全 但是效率比Stack高 Stack继承自Vector类 所以Stack可以使用Vector中的所有方法 而ArrayDeque没有继承任何类 是一个纯粹的集合类 Stack只支持栈的操作 而ArrayDeque支持双端队列和栈的操作
Stack实现栈示例
import java.util.Stack;
public class DemoStack {
public static void main(String[] args) {
// 创建一个空栈
Stack stack = new Stack<>();
// 压栈
stack.push(88);
stack.push(99);
stack.push(111);
// 输出栈顶元素
System.out.println("栈顶元素:" + stack.peek());
// 弹栈
while (!stack.isEmpty()) {
int num = stack.pop();
System.out.println(num);
}
}
}
ArrayDeque实现栈
import java.util.ArrayDeque;
public class DemoArrayDeque {
public static void main(String[] args) {
// 创建一个空栈
ArrayDeque stack = new ArrayDeque<>();
// 压栈
stack.push(88);
stack.push(99);
stack.push(111);
// 输出栈顶元素
System.out.println("栈顶元素:" + stack.peek());
// 弹栈
while (!stack.isEmpty()) {
int num = stack.pop();
System.out.println(num);
}
}
}
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


