集合 · 单选题 · 第 13 题
Java 后端开发面试 · 第 13 题
关于 null 键和 null 值,下列说法正确的是?
- AHashMap 和 ConcurrentHashMap 都允许 null 作为键,也都允许 null 作为值
- BHashMap 和 ConcurrentHashMap 都不允许 null 键,但都允许把 null 作为值存入
- CHashMap 允许一个 null 键和多个 null 值;ConcurrentHashMap 的键和值都不能为 null
- DHashMap 允许 null 键但不允许 null 值,ConcurrentHashMap 则只允许 null 值
答案
C C. HashMap 允许一个 null 键和多个 null 值;ConcurrentHashMap 的键和值都不能为 null
解析
HashMap 把 null 键的哈希值算作 0,放在 0 号桶。ConcurrentHashMap 禁止 null,是因为并发环境下 get 返回 null 时,无法区分「键不存在」和「值就是 null」,又没法像单线程那样再调 containsKey 确认。Hashtable 同样不允许 null。