HashTable
HashTable是JDK1.0时引入的一个线程安全的集合类,因为数据访问的方法都会被加上一个Synchronized同步锁。
HashTable内部是采用数组+链表来实现,链表主要是用来解决hash表hash冲突的问题。
HashTable初始容量为11。
HashTable不可以使用null作为key。
HashMap
HashMap是JDK1.2时引入的一个线程不安全的集合类。
HashMap内部同样是采用数组+链表的实现方式,在JDK1.8时还做了优化,当HashMap的链表长度大于等于8并且数组长度大于等于64时会将链表转换为红黑树,以便提升查询效率。
HashMap初始容量为16。
HashMap可以使用null作为key,因为HashMap会把null转换为0进行存储。