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

做公司网站的中国石油建设工程协会网站

做公司网站的,中国石油建设工程协会网站,商城项目,购物商城网站搭建1、典型回答 浅层次的来回答这个问题的答案是,JDK 源码不支持 Hashtable 插入 value 值为 null,如以下 JDK 源码所示: 也就是 JDK 源码规定了,如果你给 Hashtable 插入 value 值为 null 就会抛出空指针异常。 并且看上面的 JDK …

1、典型回答

浅层次的来回答这个问题的答案是,JDK 源码不支持 Hashtable 插入 value 值为 null,如以下 JDK 源码所示:

也就是 JDK 源码规定了,如果你给 Hashtable 插入 value 值为 null 就会抛出空指针异常。

并且看上面的 JDK 源码可以得出结论,如果 key 也为 null 的时候,因为 null 没有 hashCode 所以它也会报空指针异常,如下图所示:

2、考点分析

简单来说,Hashtable 之所以 key 不允许为 null,和 value 不允许为 nul 的原因是,JDK 源码级别做了限制,如果 Hashtable 的 key 或者 value 为 null 就会报空指针异常。

3、知识扩展

但是,我们看 JDK 源码不难发现,这些判断和错误 Hashtable 完全可以在后续的 JDK 版本中修复和调整代码,可以让其支持 key 和 value 都为 nul,为什么它没有修复这个问题呢?

深层次的原因就是,设计的 Hashtable 是在多线程下使用的,而如果 Hashtable 的 key 或 value 允许为 null 的话,那么程序就会存在二义性问题。

什么是二义性问题?

所谓的二义性问题是指含义不清或不明确。

如果我们假设 Hashtable 允许插入 null,那么此时它就会有二义性问题,这个 nu! 值就有两层含义

  1. 这个 key 不存在,所以返回 null。
  2. key 存在,并且值本身就为 nul,所以返回的就是 null。

而在多线程下,你没有办法证明真伪,因为你在判断证明的时候,其他线程可能同时做了修改,所以不能被证明的二义性问题需要从源头上杜绝,所以多线程下的 Hashtable 是不允许 key 和 value 插入 nu 值的。

ConcurrentHashMap 也是不允许插入 null,原因和 Hashtable 是一样的(因为有二义性问题)

为什么 HashMap 允许插入 null 值?

因为 HashMap 设计是在单线程下使用的,而单线程可以证明真伪,它在进行查询判断的时候,不用担心有其他线程对这个值同时做修改,所以它不存在二义性问题,所以 HashMap 允许 key 和 value 都为 null。

http://www.yayakq.cn/news/550511/

相关文章:

  • 大型网站开发用的技术网站优化我自己可以做吗
  • 网站风格包括编程免费自学网站
  • 网站竞价推广怎么做凯里哪里有做网站的
  • 电商网站后台功能自己怎么做dj 视频网站
  • 国家查企业的网站网站后台 页面内容不显示
  • 如何再腾讯云服务器做网站苏州seo快速优化
  • 网站建设设计计划表wordpress文章分类统计
  • 嘉兴白酒网站建设wordpress找回删除插件
  • 建设网站公司哪儿济南兴田德润有活动吗南海网站制作公司
  • 东莞佳诚网站建设有限公司奉贤网站开发
  • 秒收录网站有哪些横岗网站建设
  • 内蒙建设信息网站建设的电影网站总是无法连接
  • 做哪类网站医院网站建设要求
  • 个人网站建设 免费下载阿里建站模板
  • 中企动力做网站的优势重庆哪家制作网站好
  • 本科毕设做网站多少钱seo上海优化
  • 某俄文网站高性能网站建设指南 百度云
  • 做网站公司常熟河北手机版建站系统价格
  • 汉中专业网站建设公司微商目前十大火爆产品
  • 优秀设计师的个人网站wordpress分享跳转插件
  • 下载免费素材库网站有源代码如何做seo
  • 公司建网站的步骤是什么wordpress怎么自定义音乐
  • 赤峰市建设厅官方网站wordpress 首页 html
  • 网站解析域名长沙网站运营
  • 企业网站开发实训报告企业网站开发框架
  • 网站优化含义上海做展会的网站都有哪些
  • iis7.5搭建网站企业网站设计的基本原则有哪些
  • 龙华做网站凡科网商城
  • 做特色菜的网站完整网站开发需要多久
  • 柳州市建设中心网站the author wordpress