队列Queue相关问题
程序员文章站
2022-03-14 11:21:49
...
Queue中方法
队列是一种数据结构.它有两个基本操作:在队列尾部加人一个元素,和从队列头部移除一个元素就是说,队列以一种先进先出的方式管理数据,如果你试图向一个 已经满了的阻塞队列中添加一个元素或者是从一个空的阻塞队列中移除一个元索,将导致线程阻塞.在多线程进行合作时,阻塞队列是很有用的工具。工作者线程可 以定期地把中间结果存到阻塞队列中而其他工作者线线程把中间结果取出并在将来修改它们。队列会自动平衡负载。如果第一个线程集运行得比第二个慢,则第二个 线程集在等待结果时就会阻塞。如果第一个线程集运行得快,那么它将等待第二个线程集赶上来。
有界队列:即队列中的元素个数有限制
*队列:即队列中的元素个数无限制
add 增加一个元索 如果队列已满,则抛出一个IIIegaISlabEepeplian异常
remove 移除并返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
element 返回队列头部的元素 如果队列为空,则抛出一个NoSuchElementException异常
offer 添加一个元素并返回true 如果队列已满,则返回false
poll 移除并返问队列头部的元素 如果队列为空,则返回null
peek 返回队列头部的元素 如果队列为空,则返回null
put 添加一个元素 如果队列满,则阻塞
take 移除并返回队列头部的元素 如果队列为空,则阻塞
- 对称二叉树
public boolean isSymmetric(TreeNode root) {
Queue<TreeNode> q = new LinkedList<>();
q.add(root);
q.add(root);
while (!q.isEmpty()) {
TreeNode t1 = q.poll();
TreeNode t2 = q.poll();
if (t1 == null && t2 == null) continue;
if (t1 == null || t2 == null) return false;
if (t1.val != t2.val) return false;
q.add(t1.left);
q.add(t2.right);
q.add(t1.right);
q.add(t2.left);
}
return true;
}
上一篇: C++之queue容器使用
推荐阅读
-
中国南海和东南亚问题相关的网络攻击组织 捕获Patchwork APT攻击
-
php和js如何通过json互相传递数据相关问题探讨
-
解决RabbitMq消息队列Qos Prefetch消息堵塞问题
-
cmd 操作mysql数据库相关问题
-
Laravel使用消息队列需要注意的一些问题_php实例
-
Laravel 4.2 中队列服务(queue)使用感受
-
Tesseract应用:ScrollView.jar以及ViewDebugging的使用及相关问题
-
Ubuntu18.04遇到的一些相关问题
-
巧用jquery解决下拉菜单被Div遮挡的相关问题
-
ubuntu LAMP下PHP的开发环境zend studio的安装及相关问题