1. Why is this so?

HashMap比Hashtable更新,修复了一些限制.

我只能猜测设计师在想什么,但这是我的猜测:

> Hashtable通过在每个键上调用hashCode来计算每个键的哈希值.如果密钥为空,这将失败,因此这可能是不允许将null作为密钥的原因.

>如果键不存在,方法Hashtable.get返回null.如果null是一个有效值,那么对于null是否意味着该键存在但是值为null,或者该键不存在,那么它将是不明确的.歧义是不好的,所以这可能是不允许将null作为值的一个原因.

但是事实证明,有时你实际上想要存储空值,所以限制在HashMap中被删除.以下警告也包括在HashMap.get的文档中:

A return value of null does not necessarily indicate that the map contains no mapping for the key; it is also possible that the map explicitly maps the key to null.

2. How is it useful to have such a key and values in HashMap?

显式地存储null以区分您知道存在但不具有关联值的键和不存在的键是非常有用的.一个例子是注册用户及其生日的列表.如果您要求特定用户的生日,您可以区分不存在的用户和现有的用户,但他们没有进入他们的生日.

我想不出有什么(好的)理由想要将null作为一个关键字,并且一般来说,我建议不要使用null作为一个关键字,但可能至少有一个人在某个地方需要那些可以是空值.

java哈希映射干什么的_java – 为什么在哈希映射中有空值或空键是有用的?相关推荐

  1. java如何映射mysql枚举_java中自定义枚举enum映射到mysql数据库字段处理器handler

    mybatis中默认的处理枚举类型的handler有 如果要处理一些特殊的情况下字段内容字段的转换,需要自定义处理器,比如如下例子要处理数据库中默认字段值为""空字符串的问题 im ...

  2. Java中vo是干什么的_Java 中 PO 与 VO 的区别

    什么是PO PO(Persistence Object 持久化对象)是直接跟持久层数据库打交道的java Bean (model,entity,bean等叫法都是可以的),里面除了私有的成员变量之外, ...

  3. java的tey语句return了_Java中try、finally语句中有return时的执行情况

    在Java中当try.finally语句中包含return语句时,执行情况到底是怎样的,finally中的代码是否执行,大家众说纷纭,有的说会执行,有的说不会执行,到底哪种说法正确,现在通过下面的例子 ...

  4. java 取绝对值_Java实现一致性哈希算法,并搭建环境测试其负载均衡特性

    实现负载均衡是后端领域一个重要的话题,一致性哈希算法是实现服务器负载均衡的方法之一,你很可能已在一些远程服务框架中使用过它.下面我们尝试一下自己实现一致性哈希算法. 一. 简述一致性哈希算法 这里不详 ...

  5. bootstracp实现树形列表_Java实现一致性哈希算法,并搭建环境测试其负载均衡特性...

    实现负载均衡是后端领域一个重要的话题,一致性哈希算法是实现服务器负载均衡的方法之一,你很可能已在一些远程服务框架中使用过它.下面我们尝试一下自己实现一致性哈希算法. 一. 简述一致性哈希算法 这里不详 ...

  6. 【Java数据结构】Map与Set、搜索树、哈希表

    1.1 概念及场景 1.2 模型 二.Map 的使用 2.1.关于Map的说明 2.2.Map 的常用方法说明 2.3.TreeMap的使用案例 三.Set 的说明 3.1.常见方法说明 3.2.Tr ...

  7. java jcf框架干啥的_Java集合框架体系JCF

    Java 集合框架体系作为Java 中十分重要的一环, 在我们的日常开发中扮演者十分重要的角色, 那么什么是Java集合框架体系呢? 在Java语言中,Java语言的设计者对常用的数据结构和算法做了一 ...

  8. java接口注入对象的意义_Java Web系列:Spring依赖注入基础

    一.Spring简介 1.Spring简化Java开发 Spring Framework是一个应用框架,框架一般是半成品,我们在框架的基础上可以不用每个项目自己实现架构.基础设施和常用功能性组件,而是 ...

  9. Java集合(八) 迭代器Iterator、泛型、Map映射

    一. 迭代器 迭代器的增删作用于原集合 用迭代器遍历集合 , 用指针的挪动来获取对应的元素,通过标记这个元素是否可以用来操作 去操作原集合. 在迭代过程中不允许直接操作原集合. forEach --- ...

最新文章

  1. 详细介绍React模态框组件react-modal
  2. HTML5怎样创建画布?
  3. OpenCV坐标体系的初步认识
  4. 在线教育如何应对流量洪峰?阿里云专家:上云+云数据库是最佳路径
  5. 初学c#读书笔记(一)--c#和.NET Framework
  6. delphi 通讯数据解析_网络工程师-ARP是如何解析?
  7. JS中创建对象的方法
  8. android 浏览器开技术
  9. 3升5升得4升——倒水问题的万能解法(扩展欧几里得算法)
  10. APP,webapp 设计相关资料汇集区
  11. 期末前端web大作业——用前端语言写一个小游戏
  12. mysql 三星索引_三星索引系统
  13. xp系统 共享文件夹服务器,WinXP如何共享文件夹?共享文件夹的方法
  14. html5学习笔记之十(微数据)
  15. 浅析信息系统架构的应用架构与数据架构
  16. Linux C++ IDEs
  17. STM8-STVD+Cosmic编译输出信息参数配置
  18. Android 安卓ADB命令远程调试 单个或多个设备调试
  19. 区块链入门者的五本必读书籍
  20. 南京邮电大学c语言实验报告3v2,南京邮电大学操作系统实验报告

热门文章

  1. 滚动时间选择器recyclerview_Android自定义可循环的滚动选择器CycleWheelView
  2. axios, ajax和fetch的比较
  3. easycode 表配置_idea的easyCode的 MybatisPlus模板的配置详解
  4. 华师网教计算机应用基础作业,华师大网络教育选修课《计算机应用基础统考》平时作业答案(13页)-原创力文档...
  5. springmvc 同时匹配.do,.action
  6. (一)人工智能与机器语言翻译简介
  7. 边缘设备上的实时AI虫害消除:入门
  8. Facebook 开源 M2M-100,不依赖英语互译百种语言
  9. 使用EntityFramework Core和Enums作为字符串的ASP.NET Core Razor页面——第四部分
  10. 重复订单号校验_吊打面试官系列重复消费、顺序消费、分布式事务