Map集合 | key | value |
HashMap | 允许为null | 允许为null |
Hashtable | 不允许为null | 不允许为null |
Hashtable | 不允许为null | 不允许为null |
LinkedHashMap | 允许为null | 不允许为null |
ConcurrentHashMap | 不允许为null | 不允许为null |
ConcurrentSkipListMap | 不允许为null | 不允许为null |
以上不允许为null的,若执行则报 空指针异常.
补充: 关于TreeMap有如下总结
public static void main(String[] args) {
Map<String, Object> treemap = new TreeMap<>((o1, o2) -> {
if (o1 == null) {
return 1;
} else {
return o1.charAt(0) - o2.charAt(0);
}
});
treemap.put(null, 123);
System.out.println(treemap.get(null));
for (Map.Entry<String, Object> entry : treemap.entrySet()) {
System.out.println(entry.getKey() + '-' + entry.getValue());
}
}
总结: 1) 当未实现 Comparator 接口时, key 不可为null, 否则抛出空指针异常; 2) 当实现了 Comparator 接口时, 如果处理了为null的情况则不报错, 可以正常存入,但是通过 get 方法不能获取值, 只能通过遍历去访问.