早在 Java 2 中之前,Java 就提供了特设类。比如:Dictionary, Vector, Stack, 和 Properties 这些类用来存储和操作对象组。虽然这些类都非常有用,但是它们缺少一个核心的,统一的主题。由于这个原因,使用 Vector 类的方式和使用 Propertie
正文
Java集合框架之Stack Queue Deque使用详解刨析
1. Stack
1.1 介绍
Stack 栈是 Vector 的一个子类,它实现了一个标准的后进先出的栈。它的底层是一个数组。
堆栈只定义了默认构造函数,用来创建一个空栈。堆栈除了包括由 Vector 定义的所有方法,也定义了自己的一些方法。
1.2 常见方法
| 方法 | 描述 |
|---|---|
E push(E item) |
压栈 |
E pop() |
出栈 |
E peek() |
查看栈顶元素,不删除 |
boolean empty() |
判断栈是否为空 |
注意: 下面的示例都是一份代码分开拿出来的,上下其实是有逻辑关系的
示例一: 用 Stack 构造一个元素为整形的栈
|
1
|
Stack<Integer> stack = new Stack<>(); |
示例二: 压栈
|
1
2
3
4
|
stack.push(1);stack.push(2);stack.push(3);// 结果为:[1, 2, 3] |
示例三: 查看栈顶元素不删除
|
1
2
3
|
System.out.println(stack.peek());System.out.println(stack);// 结果为:3 和 [1, 2, 3] |
示例四: 出栈
|
1
2
3
|
System.out.println(stack.pop());System.out.println(stack);// 结果为:3 和 [1, 2] |
示例五: 判断栈是否为空
|
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 创建一个元素为整型的队列
|
1
|
LinkedList<Integer> linkedList = new LinkedList<>(); |
示例二: 入队列
|
1
2
3
|
linkedList.offer(1);linkedList.offer(2);linkedList.offer(3); |
示例三: 出队列
|
1
2
|
System.out.println(linkedList.poll());// 结果为:1 |
示例四: 得到队首元素,不删除
|
1
2
|
System.out.println(linkedList.peek());// 结果为:2 |
示例五: 判断队列是否为空
|
1
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 创建一个元素为整型的队列
|
1
|
LinkedList<Integer> linkedList = new LinkedList<>(); |
示例二: 从队头入队
|
1
2
3
4
|
linkedList.offerFirst(1);linkedList.offerFirst(2);linkedList.offerFirst(3);// 队列为:[3, 2, 1] |
示例三: 从队尾入队
|
1
2
3
4
|
linkedList.offerLast(7);linkedList.offerLast(8);linkedList.offerLast(9);// 队列为:[3, 2, 1, 7, 8, 9] |
示例四: 从队头出队
|
1
2
|
System.out.println(linkedList.pollFirst());// 结果为:3 |
示例五: 从队尾出队
|
1
2
|
System.out.println(linkedList.pollLast());// 结果为:9 |
示例六: 得到队头元素,不删除
|
1
2
|
System.out.println(linkedList.peekFirst());// 结果为:2 |
示例七: 得到队头元素,不删除
|
1
2
|
System.out.println(linkedList.peekLast());// 结果为:8 |
到此这篇关于Java集合框架之Stack Queue Deque使用详解刨析的文章就介绍到这了,更多相关Java 集合框架内容请搜索米米素材网以前的文章或继续浏览下面的相关文章希望大家以后多多支持米米素材网!
原文链接:https://blog.csdn.net/weixin_51367845/article/details/120898298

发表评论