Java集合框架之Stack Queue Deque使用详解刨析

作者:谢谢你,泰罗! 时间:2022-06-11 06:10:19 

1. Stack

1.1 介绍

Stack 栈是 Vector 的一个子类,它实现了一个标准的后进先出的栈。它的底层是一个数组。

堆栈只定义了默认构造函数,用来创建一个空栈。堆栈除了包括由 Vector 定义的所有方法,也定义了自己的一些方法。

1.2 常见方法

方法描述
E push(E item)压栈
E pop()出栈
E peek()查看栈顶元素,不删除
boolean empty()判断栈是否为空

注意: 下面的示例都是一份代码分开拿出来的,上下其实是有逻辑关系的

示例一: 用 Stack 构造一个元素为整形的栈


Stack<Integer> stack = new Stack<>();

示例二: 压栈


stack.push(1);
stack.push(2);
stack.push(3);
// 结果为:[1, 2, 3]

示例三: 查看栈顶元素不删除


System.out.println(stack.peek());
System.out.println(stack);
// 结果为:3 和 [1, 2, 3]

示例四: 出栈


System.out.println(stack.pop());
System.out.println(stack);
// 结果为:3 和 [1, 2]

示例五: 判断栈是否为空


System.out.println(stack.empty());
// 结果为:false

2. Queue

2.1 介绍

Queue 队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。

LinkedList 类实现了 Queue 接口,因此我们可以把 LinkedList 当成 Queue 来用。

2.2 常见方法

方法描述
boolean offer(E e)入队列(出现错误返回特殊值)
boolean add(E e)入队列(出现错误抛异常)
E poll()出队列(出现错误返回特殊值)
E remove()出队列(出现错误抛异常)
E peek()得到队首元素,不删除(出现错误返回特殊值)
E element()得到队首元素,不删除(出现错误抛异常)
boolean isEmpty()判断队列是否为空

注意: 接下来使用 LinkedList 演示队列的使用方法,只要把握先进先出的原则就行。下面的示例都是一份代码分开拿出来的,上下其实是有逻辑关系的

示例一: 使用 LinkedList 创建一个元素为整型的队列


LinkedList<Integer> linkedList = new LinkedList<>();

示例二: 入队列


linkedList.offer(1);
linkedList.offer(2);
linkedList.offer(3);

示例三: 出队列


System.out.println(linkedList.poll());
// 结果为:1

示例四: 得到队首元素,不删除


System.out.println(linkedList.peek());
// 结果为:2

示例五: 判断队列是否为空


System.out.println(linkedList.isEmpty());
// 结果为:false

3. Deque

3.1 介绍

双端队列是指允许两端都可以进行入队和出队操作的队列。元素可以从队头出队和入队,也可以从队尾出队和入队

LinkedList 类实现了 Deque 接口,因此我们可以把 LinkedList 当成 Deque 来用。

3.2 常见方法

方法描述
boolean offerFirst(E e)从队头入队
boolean offerLast(E e)从队尾入队
E pollFirst()从队头出队
E pollLast()从队尾出队
E peekFirst()得到队头元素,不删除
E peekLast()得到队尾元素,不删除

注意: 接下来使用 LinkedList 演示队列的使用方法,只要把握先进先出的原则就行。下面的示例都是一份代码分开拿出来的,上下其实是有逻辑关系的

示例一: 使用 LinkedList 创建一个元素为整型的队列


LinkedList<Integer> linkedList = new LinkedList<>();

示例二: 从队头入队


linkedList.offerFirst(1);
linkedList.offerFirst(2);
linkedList.offerFirst(3);
// 队列为:[3, 2, 1]

示例三: 从队尾入队


linkedList.offerLast(7);
linkedList.offerLast(8);
linkedList.offerLast(9);
// 队列为:[3, 2, 1, 7, 8, 9]

示例四: 从队头出队


System.out.println(linkedList.pollFirst());
// 结果为:3

示例五: 从队尾出队


System.out.println(linkedList.pollLast());
// 结果为:9

示例六: 得到队头元素,不删除


System.out.println(linkedList.peekFirst());
// 结果为:2

示例七: 得到队头元素,不删除


System.out.println(linkedList.peekLast());
// 结果为:8

来源:https://blog.csdn.net/weixin_51367845/article/details/120898298

标签:Java,集合框架,Stack,Queue,Deque
0
投稿

猜你喜欢

  • Android:“万能”Activity重构篇

    2023-09-19 07:41:05
  • android Watchdog 实现剖析

    2022-07-12 06:39:21
  • Android中Activity之间跳转和参数传递的实例

    2023-01-31 21:40:32
  • 云计算实验:Java MapReduce编程

    2021-10-08 14:25:52
  • spring-cloud入门之eureka-client(服务注册)

    2023-12-16 22:42:51
  • Java中的CAS和ABA问题说明

    2021-08-19 11:08:18
  • springboot bootcdn使用示例详解

    2022-01-14 21:56:46
  • ListView实现下拉动态渲染数据

    2022-10-31 11:19:12
  • Java中CyclicBarrier 循环屏障

    2021-11-24 08:22:24
  • Java调用wsdl接口的两种方法(axis和wsimport)

    2023-06-23 14:41:22
  • 浅谈java中异常抛出后代码是否会继续执行

    2023-01-23 18:37:45
  • JVM中的flag设置详解

    2022-08-11 01:37:20
  • JAVA中Comparable接口和自定义比较器示例讲解

    2023-11-20 22:16:32
  • C# Double转化为String时的保留位数及格式方式

    2021-09-08 13:12:00
  • win10和win7下java开发环境配置教程

    2022-05-01 05:34:22
  • java文件操作练习代码 读取某个盘符下的文件

    2023-11-12 06:34:07
  • Spring Security Remember me使用及原理详解

    2023-10-28 04:59:56
  • Java函数式编程(六):Optional

    2021-07-04 21:44:05
  • 如何在C# 枚举中增加行为

    2022-10-28 06:11:34
  • C++右值引用与move和forward函数的使用详解

    2023-07-05 19:27:33
  • asp之家 软件编程 m.aspxhome.com