ConcurrentHashMap 的 key 和 value 不能为 null 主要是为了避免二义性。null 是一个特殊的值,表示没有对象或没有引用。如果你用 null 作为键,那么你就无法区分这个键是否存在于 ConcurrentHashMap 中,还是根本没有这个键。同样,如果你用 null 作为值,那么你就无法区分这个值是否是真正存储在 ConcurrentHashMap ...
【Java面试】为什么ConcurrentHashMap中key不允许为null?看高手如何搞定面试官@Mic谈编程#java #java面试 #计算机 #程序员 - 跟着Mic学架构(Java架构师)于20220820发布在抖音,已经收获了80.0万个喜欢,来抖音,记录美好生活!
ConcurrentHashMap这么设计的原因是为了避免再多线程并发这一场景下出现歧义问题。也就是说在一个线程试图去ConcurrentHashMap中获取key的情况下,如果返回的结果是null,那么不能判断是由于这个key本身不存在导致的null,或者说是value的值本身就是null这一歧义问题。那么这种情况就会导致线程安全问题,而ConcurrentHashMap它本...
这种现象我们可以认为是线程安全性问题,而ConcurrentHashMap又是一个线程安全的集合,所以自然就不允许key或者value为null。而HashMap中是允许存null的,因为它不需要考虑到线程安全性问题。所以这个问题的核心本质还是ConcurrentHashMap这个并发安全性集合的特性。当然。Doug Lea还认为,不管是否是安全的集合,它都不应该...
publicsynchronizedVput(K key, V value){ // 确认值不为空 if(value ==null) { thrownewNullPointerException();// 如果值为null,则抛出空指针异常 } // 确认值之前不存在Hashtable里 Entry<?,?> tab[] = table; inthash=key.hashCode();// 如果key如果为null,调用这个方法会抛出空指针异常 ...
在 ConcurrentHashMap 中,key 和 value 都不能为 null。如果尝试插入 null 值,会抛出异常。例如:ConcurrentHashMap<String, String> concurrentHashMap = new ConcurrentHashMap<>();concurrentHashMap.put(null, "javacn.site"); // 抛出异常 类似地,当 value 为 null 时,也会出现异常:String key = "...
可知ConcurrentHashMap是线程安全的容器,如果ConcurrentHashMap允许存放 null 值,那么当一个线程调用get(key)方法时,返回 null 可能有两种情况: (1) 一种是这个 key 不存在于 map 中 (2) 另一种是这个 key 存在于 map 中,但是它的值为 null。 这样就会导致线程无法判断这个 null 是什么意思。 在非并发的场...
在Java语言中,ConcurrentHashMap和Hashtable这些线程安全的集合是不允许key或value插入null值的,而HashMap又允许key或value插入null值,这到底是为什么呢? null值插入演示 首先给HashMap插入null值,实现代码如下: 以上程序的执行结果如下: 从上述结果可以看出,HashMap是允许key或value插入null值的。 接着我们使用同样的方...
电脑上这几个恶心的设置,如果不关闭,小心电脑不到半年就报废 #电脑技巧 #干货分享 #程序员 3419 1 3:26 App 面试官:String能存储多少个字符,一顿操作,面试官频频点头 3047 1 18:47 App 面试官:Java项目中如何保证redis的缓存和数据库数据一致性?问倒一大片。。。面试之前一定要看完! 871 9 9:27 App ...
ConcurrentMap存储数据,它的key和value都是不能为null的 1.HashMap //key为null value为null HashMap<String,String> hashMap=new HashMap<>(); hashMap.put(null,null); hashMap.put("zhangsan",null); System.out.println(hashMap); //多个key为null ...