总结 Map 集合哪些 K/V 可以为空?哪些不可以为空?原因是什么?
最佳答案 问答题库788位专家为你答疑解惑
目录
1. 常见常用的 Map 集合有哪些?
2. HashMap 的KV都可以为空值
3. ConcurrentHashMap 的KV都不可以为空
4. TreeMap 的K不可以为空,V可以为空
5. Hashtable 的K可以为空,V不能为空
6. 总结
1. 常见常用的 Map 集合有哪些?
Java 中常用到的 Map 集合有 HashMap,ConcurrentHashMap,TreeMap,HashTable。
在这四个之中,HashMap和TreeMap 是线程不安全的;ConcurrentHashMap和HashTable是线程安全的;
2. HashMap 的KV都可以为空值
如下图所示,HashMap 在存放元素之前会先计算元素Key的哈希值,在哈希方法在添加了三元运算,如果Key == null,那么就会把该元素存放在在数组的头部,即0索引处的位置。
3. ConcurrentHashMap 的KV都不可以为空
原因我们看源码也可以得知,ConcurrentHashMap 存放元素之前先对元素的KV做判断,如果KV其中任意一个为空,都会抛出 NullPointException 空指针异常。
4. TreeMap 的K不可以为空,V可以为空
观看 TreeMap 的源码,这里它对 key 做了非空判断,如果 key 为空,则抛出空指针异常。
5. Hashtable 的K可以为空,V不能为空
依旧是看Hashtable 的源码,在进行 put 元素操作的时候,对 value 做非空判断,如果 V 为空,则抛出 NullPointExcption 空指针异常。
在计算 key 的哈希值时,若 key 也为空,空调用哈希运算也会空指针异常。
6. 总结
总结上面四种情况,可以得出如下表图
99%的人还看了
相似问题
- 如何判断一个公司是否为空壳公司
- Hive Lateral View explode列为空时导致数据异常丢失
- vue.js javascript js判断是值否为空
- 【Python 千题 —— 基础篇】判断列表是否为空
- C++ Package继承层次,采用继承实现快递包裹的分类计价(分为空运2日达、陆运3日达)。
- UE5加载websocket模块为空
- Controller接收Postman的raw参数时,属性值全部为空
- 【顺序栈的表示和实现,顺序栈的初始化,是否为空,清空顺序栈,销毁顺序栈,】
- XLSX.utils.sheet_to_json()解析excel,给空的单元格赋值为空字符串
- 总结 Map 集合哪些 K/V 可以为空?哪些不可以为空?原因是什么?
猜你感兴趣
版权申明
本文"总结 Map 集合哪些 K/V 可以为空?哪些不可以为空?原因是什么?":http://eshow365.cn/6-13430-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!