Java集合框架面试题:哪个集合类不允许null且支持并发访问?
Java面试题解答:不允许null且支持并发访问的集合类
嘿,这道题的标准答案是 ConcurrentHashMap,我给你把细节拆解清楚:
- 核心特性完全匹配:它属于
java.util.concurrent包,是专门为高并发场景打造的线程安全哈希表,支持多线程并行访问。和题目里提到的Hashtable相比,它的并发性能要强太多——Hashtable用的是全局锁,同一时间只能有一个线程操作;而ConcurrentHashMap在Java 8及之后采用CAS+局部锁的机制,能让多个线程同时操作不同的分段区域,效率提升明显。 - 严格限制null值:和Hashtable一样,它完全不允许任何null作为键或者值,要是你尝试往里面存null,直接就会抛出
NullPointerException,这点刚好符合题目里的要求。
另外补充个小知识点:还有ConcurrentSkipListMap也满足“不允许null+支持并发”的条件,不过面试里最常考的还是ConcurrentHashMap,毕竟它是日常并发场景里用得最多的哈希表实现。
再明确下题目里的Hashtable:它确实不允许null,但属于遗留类,依赖全局锁实现线程安全,同一时间仅支持单线程访问,不符合“支持并行访问”的要求,所以被排除。
内容的提问来源于stack exchange,提问作者surya prakash
相关产品推荐
相关产品推荐

