| 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 |
本文详细对比了HashMap和HashTable在Java中的使用特性,包括线程安全性、重复性、键值为null的处理、数据结构、扩容机制等关键点,帮助读者理解两者之间的差异。

1671

被折叠的 条评论
为什么被折叠?



