HashMap | HashTable | |
线程 | HashMap是线程不安全的 | Hashtable线程安全的,很多方法都有synchronized修饰,但同时因为加锁导致单线程环境下效率较低。 |
重复性 | 键不可重复,值可重复 | 键不可重复,值可重复 |
键值为不为null | 允许key为null,value也可以为null | key、value都不可以为null |
数据结构 | 数组+链表+红黑树(jdk1.8) | 数组+链表(jdk1.8) |
扩容机制 | 扩容增量:原容量的 1 倍 如 HashSet的容量为16,一次扩容后是容量为32 | 扩容增量:原容量的 1 倍+1 如 Hashtable的容量为11,一次扩容后是容量为23 |