Java中队列的使用
Published on 2022-02-22 16:25 in Java中队列的使用 with null

Java中队列的使用

Java中队列的使用

  • 注意事项
  • curd
    • create
      • add(obj): 增加一个元素,如果队列已满,则抛出异常
      • offer(obj): 添加一个元素并返回true,如果队列已满,则返回false
    • update
      • set(index, obj)
    • retrieve
      • element(): 返回队列头部的元素,如果队列为空,则抛出一个NoSuchElementException异常
      • peek(): 返回队列头部的元素,如果队列为空,则返回null
    • delete
      • remove(): 移除并返回队列头部的元素,如果队列为空,则抛出一个NoSuchElementException异常
      • poll(): 移除并返问队列头部的元素,如果队列为空,则返回null
  • 样例
  • 内部实现
    • 内部类 Node
    • 双向链表,有头尾指针
    • 查找的时候会根据 index 决定用 head 往后还是用 last 往前

注意事项

  • java.util.Queue是一个抽象类,不能实例化
  • java.util.LinkedList实现了Queue,可以当作队列来使用

样例

import java.util.*;
/*
* public class TreeNode {
* int val = 0;
* TreeNode left = null;
* TreeNode right = null;
* }
*/
public class Solution {
/**
*
* @param root TreeNode类
* @return int整型ArrayList<ArrayList<>>
*/
public ArrayList<ArrayList<Integer>> levelOrder (TreeNode root) {
// write code here
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
if (root == null) return res;
LinkedList<TreeNode> nodes = new LinkedList<>();
nodes.add(root);
while (!nodes.isEmpty()) {
int n = nodes.size();
ArrayList<Integer> layer = new ArrayList<>(n);
for (int i = 0; i < n; i++) {
TreeNode head = nodes.poll();
layer.add(head.val);
if (head.left != null) nodes.add(head.left);
if (head.right != null) nodes.add(head.right);
}
res.add(layer);
}
return res;
}
}

内部实现

LinkedList 底层实现

参考

java中queue的使用

如果您有任何关于文章的建议,欢迎评论或在 GitHub 提 PR

作者:dutrmp19
本文为作者原创,转载请在 文章开头 注明出处:https://www.cnblogs.com/dutrmp19/p/15923720.html
遵循 CC 4.0 BY-SA 版权协议


posted @   dutrmp19  阅读(908)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
点击右上角即可分享
微信分享提示