当前位置:首页 > 编程笔记 > 正文
已解决

总结 Map 集合哪些 K/V 可以为空?哪些不可以为空?原因是什么?

来自网友在路上 178878提问 提问时间:2023-09-25 11:35:11阅读次数: 78

最佳答案 问答题库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%的人还看了

猜你感兴趣

版权申明

本文"总结 Map 集合哪些 K/V 可以为空?哪些不可以为空?原因是什么?":http://eshow365.cn/6-13430-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!