关于 TreeMap 的空值(null)处理
关于 TreeMap 的空值(null)处理
1. TreeMap 对键(Key)的空值限制
不允许键为 null
TreeMap 的内部实现基于红黑树,而红黑树要求键必须具备明确的排序规则。
自然顺序:若键实现了 Comparable 接口(如 Integer、compareTo() 方法比较。
自定义比较器:若通过构造函数传入 Comparator,则需通过 compare() 方法比较。
由于 null 无法参与比较(会抛出 NullPointerException),TreeMap 禁止键为 null。
示例代码
java
TreeMap<String, Integer> map = new TreeMap<>();
map.put("a", 1); // 合法
map.put(null, 1); // 抛出 NullPointerException
2. TreeMap 对值(Value)的空值支持
允许值为 null
TreeMap 的值(Value)可以是 null,因为排序规则仅依赖键,与值无关。
示例代码
java
TreeMap<String, Integer> map = new TreeMap<>();
map.put("a", null); // 合法
map.put("b", 1); // 合法
System.out.println(map); // 输出: {a=null, b=1}
3. 空值处理的对比分析
数据结构允许键为 null允许值为 null说明
HashMap✔️(仅一个键可为 null)✔️基于哈希表,无排序要求。
TreeMap❌✔️基于红黑树,需严格排序规则。