【Java 集合框架】Stack、Queue 和 Deque 的使用

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

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

Stack 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 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 linkedList = new LinkedList<>();

示例二: 从队头入队

linkedList.offerFirst(1);

linkedList.offerFirst(2);

linkedList.offerFirst(3);

// 队列为:[3, 2, 1]

示例三: 从队尾入队

linkedList.offerLast(7);

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

linkedList.offerLast(7);

最后

按照上面的过程,4个月的时间刚刚好。当然Java的体系是很庞大的,还有很多更高级的技能需要掌握,但不要着急,这些完全可以放到以后工作中边用别学。

学习编程就是一个由混沌到有序的过程,所以你在学习过程中,如果一时碰到理解不了的知识点,大可不必沮丧,更不要气馁,这都是正常的不能再正常的事情了,不过是“人同此心,心同此理”的暂时而已。

道路是曲折的,前途是光明的!”

[外链图片转存中…(img-spWSwxJl-1718869806088)]

[外链图片转存中…(img-iIjFlAB9-1718869806089)]

  • 11
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值