首页
学习
活动
专区
圈层
工具
发布
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    面试官:为什么Map不能插入null?

    对null值的处理 1.1 HashMap对null值的处理 HashMap允许键(key)和值(value)都为null。这种设计使得HashMap在某些场景下更加灵活。...("不存在 null"); } 执行上述代码,控制台会输出“存在 null”,表明HashMap成功地将null作为键和值存储,并且可以通过containsKey(null)方法准确地判断出null键的存在...1.3 为什么ConcurrentHashMap不能插入null? 要理解ConcurrentHashMap为什么不能插入null值,我们需要从其源码层面进行分析。...1.4 更深层次的原因 那么,为什么ConcurrentHashMap的实现源码中要明确禁止key或value为null呢?...例如,当我们给HashMap的key设置为null时,可以通过hashMap.containsKey(key)的方法来区分这个null值到底是存入的null,还是压根不存在的null。

    33310

    为什么ConcurrentHashMap不允许插入null值?

    这到底是为什么呢?...那到底为什么ConcurrentHashMap不允许插入 null (空)值,HashMap又允许插入呢? 2、歧义问题 因为给ConcurrentHashMap中插入 null (空)值会存在歧义。...我们可以假设ConcurrentHashMap允许插入 null(空) 值,那么,我们取值的时候会出现两种结果: 1、值没有在集合中,所以返回的结果就是 null (空); 2、值就是 null(空)...这是因为HashMap的设计是给单线程使用的,所以如果取到 null(空) 值,我们可以通过HashMap的 containsKey(key)方 法来区分这个 null(空) 值到底是插入值是 null...以上就是我对关于ConcurrentHashMap为什么不允许插入 null (空) 值的解答。

    2.6K10

    为什么数据库字段要使用NOT NULL?

    ,或者默认0000-00-00 00:00:00,但是连接参数要添加zeroDateTimeBehavior=convertToNull,建议的话还是不要用这种默认的时间格式比较好 但是,考虑下原因,为什么要设置成...来自高性能Mysql中有这样一段话: 尽量避免NULL 很多表都包含可为NULL(空值)的列,即使应用程序并不需要保存NULL也是如此,这是因为可为NULL是列的默认属性。...如果不设置NOT NULL的话,NULL是列的默认值,如果不是本身需要的话,尽量就不要使用NULL 使用NULL带来更多的问题,比如索引、索引统计、值计算更加复杂,如果使用索引,就要避免列设置成NULL...与其他值运算 NULL和其他任何值进行运算都是NULL,包括表达式的值也是NULL。...user表第二条记录age是NULL,所以+1之后还是NULL,name是NULL,进行concat运算之后结果还是NULL。 ?

    2.3K20

    为什么不建议你用去 “! = null” 做判空?

    吐槽完毕,回到这个题目本身: 进行判空前,请区分以下两种情况: 1、null 是一个有效有意义的返回值(Where null is a valid response in terms of the contract...; and) 2、null是无效有误的(Where it isn't a valid response.)...你要感知到这个情况,告诉调用方“嘿,哥们,你传个null给我做甚"。...这种情况下,null是个”看上去“合理的值,例如,我查询数据库,某个查询条件下,就是没有对应值,此时null算是表达了“空”的概念。...解决这个问题的一个方式,就是使用Null Object pattern(空对象模式) 改造后 类定义如下,这样定义findAction方法后,确保无论用户输入什么,都不会返回null对象 public

    95110

    对象不再使用时,为什么要赋值为 null ?

    鉴于网上有太多关于此问题的误导,本文将通过实例,深入JVM剖析“对象不再使用时赋值为null”这一操作存在的意义,供君参考。本文尽量不使用专业术语,但仍需要你对JVM有一些概念。...对比两段代码,仅仅将placeHolder赋值为null就解决了GC的问题,真应该感谢“不使用的对象应手动赋值为null“。...等等,为什么例子里placeHolder不赋值为null,GC就“发现不了”placeHolder该回收呢?这才是问题的关键所在。...现在算是理清了“不使用的对象应手动赋值为null“的原理了,一切根源都是来自于JVM的一个“bug”:代码离开变量作用域时,并不会自动切断其与堆的联系。为什么这个“bug”一直存在?...总结 希望看到这里你已经明白了“不使用的对象应手动赋值为null“这句话背后的奥义。

    88520
    领券