我试图理解Java Collection框架背后的概念,并提出了这个问题 - 为什么TreeMap中不允许使用null键?
如果我们尝试在TreeMap中添加null键,它会给出NullPointerException。
尝试google TreeMap的内部工作,发现像TreeMap这样的东西使用的RedBlack树算法现在很难理解,我正在研究它。
TreeMap是一个基于红黑树的NavigableMap实现。另一个 单词,它使用红黑树对TreeMap对象键进行排序 算法
请清除我,虽然Map接口的其他两个实现允许null作为键,但为什么TreeMap不允许将null添加为键?
我想提前解释一下。
答案 0 :(得分:19)
TreeMap
允许空键。默认的自然排序比较器是抛出异常的比较器。
来自TreeMap.put
的{{3}}:
NullPointerException
- 如果指定的键为null并且此映射使用自然排序,或者其比较器不允许空键
允许空值的最简单方法是使用TreeMap
或Comparator.nullsFirst(Comparator.naturalOrder())
Comparator.nullsLast(Comparator.naturalOrder())
答案 1 :(得分:0)