首页 > 其他分享 >栈与队列相关知识(二)

栈与队列相关知识(二)

时间:2024-10-01 11:47:38浏览次数:11  
标签:返回 示例 队列 知识 queue add new 相关 stack

目录

Java中栈(Stack)

一. 常用方法

1.push(E item)

2.pop()

3.peek()

4.empty()

二. 常用方法扩展

1. search(Object o)

2. clone()

3. contains(Object o)

4. size()

5. toArray()

Java中队列(Queue)

一.常用方法(以LinkedList实现Queue为例)

1.add(E e)

2.offer(E e)

3.remove()

4.poll()

5.element()

6.peek()

二. 常用方法扩展(以LinkedList实现Queue为例,同时包括一些Queue接口实现类共有的特性)

1. size()

2. contains(Object o)

3. toArray()

4. clear()

5. iterator()

6. remove(Object o)

7. retainAll(Collection c)


Java中栈(Stack)

一. 常用方法

1.push(E item)

• 功能:将元素item压入栈顶。

• 示例:

Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);

2.pop()

• 功能:移除并返回栈顶元素。如果栈为空,会抛出EmptyStackException异常。

• 示例:

Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
int topElement = stack.pop();// 返回2

3.peek()

• 功能:返回栈顶元素,但不移除它。如果栈为空,会抛出EmptyStackException异常。

• 示例:

Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
int top = stack.peek();// 返回2,栈不变

4.empty()

• 功能:检查栈是否为空,为空返回true,否则返回false。

• 示例:

Stack<Integer> stack = new Stack<>();
boolean isEmpty = stack.empty();// true
stack.push(1);
isEmpty = stack.empty();// false

二. 常用方法扩展

1. search(Object o)

• 功能:返回对象o在栈中的位置,从栈顶开始计数,栈顶元素位置为1。如果对象o不在栈中,则返回 - 1。

• 示例:

Stack<String> stack = new Stack<>();
stack.push("a");
stack.push("b");
stack.push("c");
int position = stack.search("b");// 返回2
int notInStack = stack.search("d");// 返回 - 1

2. clone()

• 功能:创建并返回此栈的副本。克隆后的栈是一个包含相同元素的新栈,但它们在内存中是独立的对象。

• 示例:

Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
Stack<Integer> clonedStack = (Stack<Integer>) stack.clone();

3. contains(Object o)

• 功能:判断栈中是否包含指定元素o,如果包含则返回true,否则返回false。

• 示例:

Stack<String> stack = new Stack<>();
stack.push("hello");
boolean hasHello = stack.contains("hello");// 返回true
boolean hasWorld = stack.contains("world");// 返回false

4. size()

• 功能:返回栈中元素的个数。

• 示例:

Stack<Integer> stack = new Stack<>();
stack.push(1);
stack.push(2);
int size = stack.size();// 返回2

5. toArray()

• 功能:返回一个包含栈中所有元素的数组。数组的顺序与栈中元素的顺序相同,从栈顶到栈底。

• 示例:

Stack<String> stack = new Stack<>();
stack.push("a");
stack.push("b");
Object[] array = stack.toArray();
String[] stringArray = stack.toArray(new String[0]);

Java中队列(Queue)

一.常用方法(以LinkedList实现Queue为例)

1.add(E e)

• 功能:将指定元素e插入队列。如果队列已满(对于有界队列),则抛出IllegalStateException异常。

• 示例:

Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);

2.offer(E e)

• 功能:将指定元素e插入队列。如果队列已满(对于有界队列),则返回false,与add方法类似但处理满队列的方式不同。

• 示例:

Queue<Integer> queue = new LinkedList<>();
boolean success = queue.offer(1);
success = queue.offer(2);

3.remove()

• 功能:移除并返回队列的头元素。如果队列为空,则抛出NoSuchElementException异常。

• 示例:

Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
int head = queue.remove();// 返回1

4.poll()

• 功能:移除并返回队列的头元素。如果队列为空,则返回null,与remove方法类似但处理空队列的方式不同。

• 示例:

Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
int head = queue.poll();// 返回1

5.element()

• 功能:返回队列的头元素,但不移除它。如果队列为空,则抛出NoSuchElementException异常。

• 示例:

Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
int head = queue.element();// 返回1,队列不变

6.peek()

• 功能:返回队列的头元素,但不移除它。如果队列为空,则返回null,与element方法类似但处理空队列的方式不同。

• 示例:

Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
int head = queue.peek();// 返回1,队列不变

二. 常用方法扩展(以LinkedList实现Queue为例,同时包括一些Queue接口实现类共有的特性)

1. size()

• 功能:返回队列中元素的个数。

• 示例:

Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
int size = queue.size();// 返回2

2. contains(Object o)

• 功能:判断队列中是否包含指定元素o,如果包含则返回true,否则返回false。

• 示例:

Queue<String> queue = new LinkedList<>();
queue.add("hello");
boolean hasHello = queue.contains("hello");// 返回true
boolean hasWorld = queue.contains("world");// 返回false

3. toArray()

• 功能:返回一个包含队列中所有元素的数组。数组的顺序与队列中元素的顺序相同,从队头到队尾。

• 示例:

Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
Object[] array = queue.toArray();
Integer[] intArray = queue.toArray(new Integer[0]);

4. clear()

• 功能:移除队列中的所有元素,将队列清空。

• 示例:

Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
queue.clear();
boolean isEmpty = queue.isEmpty();// 返回true

5. iterator()

• 功能:返回一个迭代器,用于遍历队列中的元素。迭代器按照从队头到队尾的顺序访问元素。

• 示例:

Queue<String> queue = new LinkedList<>();
queue.add("a");
queue.add("b");
Iterator<String> iterator = queue.iterator();
while (iterator.hasNext()) {
    String element = iterator.next();
    System.out.println(element);
}

6. remove(Object o)

• 功能:从队列中移除指定元素o的第一次出现(如果存在)。如果队列为空或者元素不存在,则返回false;如果成功移除元素,则返回true。

• 示例:

Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
boolean removed = queue.remove(1);

7. retainAll(Collection<?> c)

• 功能:仅保留队列中包含在指定集合c中的元素。如果队列为空或者指定集合c为空,则不做任何操作。如果队列发生了改变(即有元素被移除),则返回true;否则返回false。

• 示例:

Queue<Integer> queue = new LinkedList<>();
queue.add(1);
queue.add(2);
Collection<Integer> collection = Arrays.asList(2, 3);
boolean changed = queue.retainAll(collection);

标签:返回,示例,队列,知识,queue,add,new,相关,stack
From: https://blog.csdn.net/2301_81718046/article/details/142669330

相关文章

  • 大模型新玩法!腾讯优图与上交大联手 利用公开知识提升大模型
    腾讯优图实验室与上海交通大学的研究团队联手推出了一项革命性的知识增强方法,为大模型优化开辟了全新道路。这项创新技术摒弃了传统模型微调的局限,直接从开源数据中提取知识,大幅简化了模型优化流程,在多项任务中实现了超越现有最先进技术(SOTA)的卓越表现。近年来,大型语言模......
  • C++入门基础知识91(实例)——实例16【求两数最小公倍数】
    成长路上不孤单......
  • 计算机知识科普问答--24(116-120)
    文章目录116、什么是文件的索引节点?什么是文件的索引节点(Inode)?一、Inode的基本概念1.定义2.作用二、Inode的内容1.文件标识信息2.文件属性信息3.文件位置和结构信息4.文件状态信息三、Inode的工作原理1.文件操作流程2.Inode与文件系......
  • RabbitMQ死信队列和延迟队列(具体代码演示)
    先理解以下两点:1.延迟队列存储是延时消息,指当消息被发送以后,不让消费者立即拿到消息,而是等待指定时间后,消费者才能拿到消息进行消费。(队列设置过期时间对队列中所有消息生效,如果队列和消息都设置了消息过期时间,会取时间短的)2.入死信队列的三种情况:1.请求被拒绝的消息2.......
  • Leetcode:栈和队列的互相实现
    目录一、用两个队列实现栈题目:分析:代码实现: 二、用两个栈实现队列题目: 分析:代码:总结:核心就在于先进先出和后进先出之间的一个灵活变换,两个栈能够先进先出,而两个队列能够后进先出 一、用两个队列实现栈题目:.-力扣(LeetCode).-备战技术面试?力扣提供海量技术......
  • js进阶——FormData常用知识点介绍
    FormData是JavaScript中用于构建表单数据对象的API,它主要用于处理enctype="multipart/form-data"类型的表单提交,即上传文件和数据。通过FormData,开发者可以在客户端构建和发送表单数据,尤其是在没有使用传统的HTML表单提交时,允许开发者进行更多的自定义和控制。For......
  • 鹏哥C语言54.一维数组(知识点)
    1.1一维数组的创建✌️✌️✌️ 举个例子:! 1.2数组的初始化 特别注意上面第6个,arr6[]实际上算是arr6[7]因为字符串末尾默认放了一个\0......
  • SqlSugar 基础知识
     1、实体特性[SugarColumn(IsPrimaryKey=true)]标识是否为主键[SugarColumn(IsIdentity=true)]是否为自增长[SugarColumn(ColumnName="id")]对应数据库表里面的某列[SugarColumn(IsIgnore=true)]忽略熟悉,在ORM会过滤掉[SugarColumn(ColumnDescription="创建......
  • 1284 海港 队列 模拟
    思路解释 1. 数据结构选择: 使用 queue 来存储每艘船的到达时间和乘客国籍信息。 使用数组 a 来记录每个国籍的乘客数量。 2. 输入处理: 读取船只数量 n。 对于每艘船,读取其到达时间 t 和乘客数量 k,然后读取每个乘客的国籍 x。 3. 统计不同......
  • 9073 关系网络 广搜 队列
    解决思路 广度优先搜索 (BFS):使用BFS从起点 x 开始搜索,找到到达终点 y 的最短路径。 队列:使用队列存储当前节点和步数。 访问标记:使用数组 vis 标记节点是否被访问过,防止重复访问。#include<bits/stdc++.h>#definelllonglongusingnamespacestd;c......