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设计者需要考虑的问题。

相关文章:

  • 2022-12-23
  • 2022-02-12
  • 2022-12-23
  • 2021-08-08
  • 2021-11-13
  • 2021-10-10
  • 2021-07-12
  • 2021-09-28
猜你喜欢
  • 2021-08-23
  • 2022-01-20
  • 2021-08-30
  • 2022-01-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-03
相关资源
相似解决方案