Java 集合类笔记

Hashtable、HashMap、TreeMap 三者区别

比较点 Hashtable HashMap TreeMap
key 不能为null 可以为 null
value 不能为 null 可以为 null
key 一定情况下可以为 null
有序性 无序 无序 有序
容量 初始 11 初始 16,且一定为 2 n 2^n 2n
扩容 2n+1 2n
线程安全性 线程安全 线程不安全
hash 值计算 底层是模运算,效率较低 底层是移位运算

TreeMap 关于 key 为 null 的说明:TreeMap 初始化时可以传入 Comparator 参数,但也可以不传入。如果没有传入,在 put 元素时,默认使用 key 实现的 Comparable 进行比较然后按顺序存储(如果 key 没有实现 Comparable,在 ClassCast 的时候直接抛出异常),当然,key 如果为 null,则调用方法 compare 直接空指针异常。

但是,如果传入 Comparator,那么在 Comparator 的方法 compare 中,小心地判断了 key 为 null 的情况,也是可以将 key 存储为 null 的。

上一篇:d3.event=null


下一篇:面经-Map