1. 首先,Hashtable底層是通過數組加鏈表實現的,這點和JDK1.8之前的HashMap差不多。
2. 其次,Hashtable是不允許key或者value為null的。
3. 并且,Hashtable的計算索引方法,默認容量大小,擴容方法都與HashMap不太一樣。
4. 線程安全,Hashtable之所以線程安全,大部分方法都是使用了synchronized關鍵字,雖然JDK優化了synchronized,但在方法上使用該關鍵字,無疑仍舊是效率低下的操作。
5. 不建議使用,以后說不定哪天就廢掉了。連官方文檔也說了,如果在非線程安全的情況下使用,建議使用HashMap替換,如果在線程安全的情況下使用,建議使用ConcurrentHashMap替換。
- Java
- Object
- 內部類
- 異常
- 注解
- 反射
- 靜態代理與動態代理
- 泛型
- 繼承
- JVM
- ClassLoader
- String
- 數據結構
- Java集合類
- ArrayList
- LinkedList
- HashSet
- TreeSet
- HashMap
- TreeMap
- HashTable
- 并發集合類
- Collections
- CopyOnWriteArrayList
- ConcurrentHashMap
- Android集合類
- SparseArray
- ArrayMap
- 算法
- 排序
- 常用算法
- LeetCode
- 二叉樹遍歷
- 劍指
- 數據結構、算法和數據操作
- 高質量的代碼
- 解決問題的思路
- 優化時間和空間效率
- 面試中的各項能力
- 算法心得
- 并發
- Thread
- 鎖
- java內存模型
- CAS
- 原子類Atomic
- volatile
- synchronized
- Object.wait-notify
- Lock
- Lock之AQS
- Lock子類
- 鎖小結
- 堵塞隊列
- 生產者消費者模型
- 線程池