為什么ConcurrentHashMap不能存null key和null value?


ConcurrentHashMap是J.U.C包下著名的線程安全類。通常作為高並發情境下HashMap的替代工具。

我們都知道HashMap是支持Null Key 和 Null Value的,當遇到Null Key時,我們會將它hash到HashMap的內部Table[]的第0個位置去。

但是ConcurrentHashMap不允許使用Null Key和Null Value,如果遇到會直接拋出NullPointException,這樣設計是為什么呢?

 

首先,很多開發者認為,null是一個非常不好的設計,他應該只被用來表示未初始化的引用類型;

再者,在並發中,null是一個非常嚴重的問題,高並發下,盡可能地消除歧義是必要的,你需要知道究竟是沒有找到,還是它的值為null;

對於key不為null的設置,我個人傾向於這是一種開發規范的問題,一家人就要整整齊齊,你就和value一起別為null了。

並且null的使用需要謹慎,所以盡可能地防范於未然,也是api設計者需要考慮的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM