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); } } }
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。