Java 队列Queue的一些基本操作与概念!!!!!!!!
首先Java中的队列(Queue)是一种先进先出的数据结构。
其中常见的一些基本操作与方法,包括:
1、创建队列对象。例如:ArrayDeque、LinkedList等。
2、入队操作。将元素添加到队列的末尾处,使用offer()方法。
3、出队操作。从队列的头部移除并返回元素,使用poll()方法。
4、peek()方法:查看队首元素。如果队列为空,则返回null。
5、isEmpty()方法。用于判断队列是否为空,空则返回true。
6、获取队列的大小,采用size()方法。
7、清除队列内的元素,采用clear()方法。
下面采用力扣中的一道题,来展示上述的基本操作与方法。
题目:给定非空的二叉树根节点root,以数组的形式返回每一层节点的平均值。
输入:root = [3,9,20,null,null,15,7]
输出:[3.00000,14.50000,11.00000]
解释:第 0 层的平均值为 3,第 1 层的平均值为 14.5,第 2 层的平均值为 11 。因此返回 [3, 14.5, 11]
解题思路:
class Solution {
public List<Double> averageOfLevels(TreeNode root) {
// 二叉树的话,一定是通过left right进行遍历 root.left.val root.right.val 每一层的结果sum/count
List<Double> result = new ArrayList<>();
if(root == null){
return result;
}
// 采用队列入队的方式进行保存数据值 - 基本操作1、创建队列对象
Queue<TreeNode> queue = new LinkedList<>();
// - 基本操作2、入队操作
queue.offer(root);
// - 基本操作5: 判断队列是否为空,为空 -> True -> False 跳出循环
while(!queue.isEmpty()){
// - 基本操作6: 获取队列的大小
int size = queue.size();
double sum = 0.0;
for(int i=0;i<size;i++){
// - 基本操作3: 出队操作
TreeNode node = queue.poll();
sum += node.val;
// 获取对应元素的左叶子结点 + 右叶子结点
TreeNode left = node.left;
TreeNode right = node.right;
if(left != null){
queue.offer(left);
}
if(right != null){
queue.offer(right);
}
}
// 每一层 都 取平均数
result.add(sum / size);
}
return result;
}
}
Java 队列Queue的一些基本操作与概念!!!!!!!!的更多相关文章
- java队列Queue及阻塞队列
java队列 接口Queue类在java.util包,定义了以下6个方法 详细查看官方文档https://docs.oracle.com/javase/7/docs/api/java/util/Que ...
- java队列——queue详细分析
Queue: 基本上,一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List.Set同一级别,都是继承了Collection接口.LinkedList实现了Deque接 口. Q ...
- java队列--queue详细分析
---恢复内容开始--- Queue:基本上一个队列就是一个先入先出(FIFO)的数据结构 Queue接口与List.Set同一级别,都是继承了Collection接口,LinkedList实现了Li ...
- 学习笔记之Java队列Queue中offer/add函数,poll/remove函数,peek/element函数的区别
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作. LinkedList类实现了Queue接口,因此我们可以把LinkedList当成Queue来用. Java中Que ...
- Java队列Queue
上个星期总结了一下synchronized相关的知识,这次将Queue相关的知识总结一下,和朋友们分享. 在Java多线程应用中,队列的使用率很高,多数生产消费模型的首选数据结构就是队列.Java提供 ...
- java队列queue的我觉得很好的使用方式
LinkedList实现了queue接口,通常使用LinkedList 其中关键两个函数:offer().poll() offer()表示“排队”----插入到队列最前,poll()表示轮到了队列最前 ...
- java中队列Queue的使用
1.在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.Queue接口与List.Set同一级别,都是继承了Collection接口.Queue使用时要尽量避免Colle ...
- Java中的队列Queue,优先级队列PriorityQueue
队列Queue 在java5中新增加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口. Queue使用时要尽量避免Collecti ...
- Java中的队列:java.util.Queue接口
队列是一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作. Queue接口与List.Set同一级别,都是继承了Collection接口.Linked ...
- java中使用队列:java.util.Queue
在java5中新添加了java.util.Queue接口,用以支持队列的常见操作.该接口扩展了java.util.Collection接口.Queue使用时要尽量避免Collection的add()和 ...
随机推荐
- windows安全中心打不开
解决win11打不开安全中心的问题!!! 许多用户在最近都升级了Windows11系统,而且不少用户最近在使用Win11的时候发现自己打不开Windows安全中心 操作方法: 管理员权限打开Power ...
- MODBUS RTU转 EtherNet/IP 网关连接森兰变频器与欧姆龙系统通讯
捷米特JM-EIP-RTU(Modbus转Ethernet/Ip)网关,用于将多个 MODBUS 从站设备接入 ETHERNET/IP 主站网络,实现 MODBUS 转 ETHERNET/IP 功 ...
- 【阅读笔记】超分之LANR-NLM算法
论文信息 [Single Image Super-Resolution via Locally Regularized Anchored Neighborhood Regression and Non ...
- zabbix 修改模板中单个主机的触发器
参考文档:zabbix 修改模板中单个主机的触发器 在主机的 Triggers,克隆后修改,再disable原来的触发器.
- 2022-1-11 面板控件学习1 Canvas、WrapPanel、StackPanel、DockPanel、Grid
Canvas WrapPanel 让控件横向排列 StackPanel 控件竖向排列 DockPanel 自由布局,LastChildFill防止最后一个控件自动填充满 Grid 使用*和2*可以分配 ...
- nginx搭建静态文件下载服务器
配置文件大致内容 server { # 监听8001端口 listen 8001; server_name 192.168.0.2; # 指定使用utf8的编码 charset utf-8; # 内容 ...
- python中将时间转换为时间戳
某平台url中的时间格式为时间戳,将时间变量传入url前,需要将固定格式的时间转换为时间戳.使用python中的time模块,对时间的几种格式进行转换. strptime(),将时间字符串转换成 结构 ...
- LVS专访阿里云席明贤,从视频云2.0到“数能生智”的超长畅谈
这是一篇人物专访,源自LiveVideoStack与阿里云视频云负责人席明贤(花名右贤)的对话.面对风云变幻的内外环境,阿里云在视频云赛道是坚定向前的,右贤没有回避多媒体当下行业面临的困难以及业务面临 ...
- uniapp 地图如何添加?你要的教程来喽!
地图在 app 中使用还是很广泛的,常见的应用常见有: 1.获取自己的位置,规划路线. 2.使用标记点进行标记多个位置. 3.绘制多边形,使用围墙标记位置等等. 此篇文章就以高德地图为例,以上述三个常 ...
- Tcp/Ip协议 A类B类C类D类 地址
TCP(传输控制协议):负责和远程主机连接 Ip(网际协议):负责寻址,使报文发送到其该在的地方 Ip地址:是TCP/IP的网络层用以标识网络中主机的逻辑地址,可以唯一标识Interent中的一台主 ...