当前位置: 首页 > news >正文

JAVA中的ArrayDeque和LinkedList实现Deque,前者不能存NULL结点,后者可以存放NULL。

在刷力扣的时候,在进行二叉树的题目训练时,需要用队列来存储二叉树的结点。因为使用ArrayDeque实现Deque习惯了,所以默认使用ArrayDeque来实现Deque。

Deque<TreeNode> dq=new ArrayDeque<>();

但是在运行的时候,发现这个dq中无法存入null空结点,会报空指针异常。于是尝试了使用LinkedList来实现Deque。

Deque<TreeNode> dq=new LinkedList<>();

这样再将null空结点存入这个队列就不会报错了,我分别查看了一下两者的源码。他们的源码分别如下:

    //ArrayDequepublic void addFirst(E e) {if (e == null)throw new NullPointerException();final Object[] es = elements;es[head = dec(head, es.length)] = e;if (head == tail)grow(1);}/*** Inserts the specified element at the end of this deque.** <p>This method is equivalent to {@link #add}.** @param e the element to add* @throws NullPointerException if the specified element is null*/public void addLast(E e) {if (e == null)throw new NullPointerException();final Object[] es = elements;es[tail] = e;if (head == (tail = inc(tail, es.length)))grow(1);}
    //LinkedListpublic void addFirst(E e) {linkFirst(e);}/*** Appends the specified element to the end of this list.** <p>This method is equivalent to {@link #add}.** @param e the element to add*/public void addLast(E e) {linkLast(e);}

可以看到在ArrayDeque会对加入的值进行判断,如果为空就会报出异常,而LinkedList不会。具体原因我也不清楚。。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 【upload]-ini-[SUCTF 2019]CheckIn-笔记
  • MySQL 中主键索引的页分裂:深入探讨
  • STM32家族系列的区别
  • 使用go实现一个简单的聊天服务器
  • 机器学习/深度学习——梯度下降法(Gradient descent)详解. 步骤清晰 0基础可看
  • 月薪5W的项目经理是如何面试的?这份面试攻略请收好!
  • Jetson Orin NX 功耗模式选择:MAXN与25W模式的对比与优化建议
  • 聊一聊 Netty 数据搬运工 ByteBuf 体系的设计与实现
  • IP地址证如何实现HTTPS访问?(内网IP、公网IP)
  • Python 之Scikit-learn(五) -- Scikit-learn提供的数据集及其详细介绍
  • 用户案例|Maple 软件在德国亚琛工业大学化学教学中的创新应用
  • PHPStorm 环境配置与应用详解
  • Axios 详解与使用指南
  • 子网掩码是什么以及子网掩码相关计算
  • Mysql的完整性约束
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 【译】理解JavaScript:new 关键字
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Fabric架构演变之路
  • golang 发送GET和POST示例
  • Java 多线程编程之:notify 和 wait 用法
  • java概述
  • ng6--错误信息小结(持续更新)
  • PHP变量
  • RxJS 实现摩斯密码(Morse) 【内附脑图】
  • Spark in action on Kubernetes - Playground搭建与架构浅析
  • SQLServer之索引简介
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • zookeeper系列(七)实战分布式命名服务
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 猴子数据域名防封接口降低小说被封的风险
  • 简单实现一个textarea自适应高度
  • 将 Measurements 和 Units 应用到物理学
  • 警报:线上事故之CountDownLatch的威力
  • 离散点最小(凸)包围边界查找
  • 一个完整Java Web项目背后的密码
  • 硬币翻转问题,区间操作
  • FaaS 的简单实践
  • 如何在 Intellij IDEA 更高效地将应用部署到容器服务 Kubernetes ...
  • (12)Linux 常见的三种进程状态
  • (TipsTricks)用客户端模板精简JavaScript代码
  • (二)hibernate配置管理
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (附源码)springboot 个人网页的网站 毕业设计031623
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (每日持续更新)jdk api之FileReader基础、应用、实战
  • (深度全面解析)ChatGPT的重大更新给创业者带来了哪些红利机会
  • (十三)Flask之特殊装饰器详解
  • (算法)求1到1亿间的质数或素数
  • (一) springboot详细介绍
  • (转)VC++中ondraw在什么时候调用的
  • .form文件_一篇文章学会文件上传
  • .gitignore文件—git忽略文件
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .net framework 4.0中如何 输出 form 的name属性。