Java之Stack和ArrayDeque区别说明

书欣 Java经验 发布时间:2023-07-07 17:29:38 阅读数:18595 1
下文笔者讲述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);
        }
    }
}
版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202307/16887222017037.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者