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()和 ...
随机推荐
- 高并发场景下,6种解决SimpleDateFormat类的线程安全问题方法
摘要:解决SimpleDateFormat类在高并发场景下的线程安全问题可以有多种方式,这里,就列举几个常用的方式供参考. 本文分享自华为云社区<[高并发]更正SimpleDateFormat类 ...
- JS逆向实战19——通杀webpack逆向
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 网站 aHR0cHM6Ly ...
- 【Azure Event Hub】自定义告警(Alert Rule)用来提示Event Hub的消息incoming(生产)与outgoing(消费)的异常情况
问题描述 在使用Azure Service Bus的时候,我们可以根据Queue中目前存在的消息数来判断当前消息是否有积压的情况. 但是,在Event Hub中,因为所有消息都会被存留到预先设定的保留 ...
- n皇后问题的分析和实现
N皇后问题的分析和实现 1.实现要求 2.代码实现 1.实现要求 在n*n的方格棋中,放置n个皇后,要求每个皇后不同行,不同列,不同对角线 以行为依据,遍历行,判断行对应的列是否符合要求 判定要求: ...
- Vue + Element ui 实现动态表单,包括新增行/删除行/动态表单验证/提交功能
总结/朱季谦 最近通过Vue + Element ui实现了动态表单功能,该功能还包括了动态表单新增行.删除行.动态表单验证.动态表单提交功能,趁热打铁,将开发心得记录下来,方便以后再遇到类似功能时, ...
- HTML前端js
ajax请求方法书写 $.ajax({ type:"POST", url:CONTEXT_PATH+"/appAudit/insertSnDocCountAdmin&qu ...
- spring cloud zuul实践
一. 描述 Spring Cloud Zuul是基于Netflix开源的Zuul项目构建而成,它作为微服务架构中的网关服务,主要用于实现动态路由.负载均衡和请求过滤等功能. 动态路由:Zuul根据预设 ...
- Java IO流 - 字节流的使用详细介绍
IO流的基本介绍: IO流的概述: i 表示intput,是数据从硬盘文件读入到内存的过程,称之输入,负责读. o 表示output,是内存程序的数据从内存到写出到硬盘文件的过程,称之输出,负责写. ...
- NOIP模拟测试A3
A. 谜之阶乘 题目是让我们把 \(n\) 分解成两个阶乘的商,本来想推个式子什么的,结果发现推不出来. 我们知道,阶乘的增长速率非常的快啊!那么这个 \(b - a\) 的值肯定不会太大,我们可以暴 ...
- 使用gulp.js打包layuiAdmin
安装nvm 在nvm目录下,找到settings.txt,追加以下两行加速nvm(淘宝镜像)node_mirror: https://npm.taobao.org/mirrors/node/npm_m ...