Hashtable和HashMap和LinkedHashMap和TreeMap区别
底层实现
Hashtable基于 数组+链表 实现
HashMap基于 数组+链表/完全二叉树 实现
LinkedHashMap基于 数组+链表/完全二叉树+双向链表 实现
TreeMap基于 完全二叉树 实现
接口实现
Hashtable,HashMap,LinkedHashMap和TreeMap都实现了Serializable和Cloneable接口,支持 序列化和克隆操作
时间复杂度
链表时间复杂度:O(n),完全二叉树时间复杂度:O(log(N))
1.Hashtable:
put时间复杂度:O(1)
remove时间复杂度:O(1) ~ O(n)
get时间复杂度:O(1) ~ O(n)
containsKey平均时间复杂度:O(1) ~ O(n)
1.HashMap:
put时间复杂度:O(1)
remove时间复杂度:O(1) ~ O(n)
get时间复杂度:O(1) ~ O(n)
containsKey平均时间复杂度:O(1) ~ O(n)
2.LinkedHashMap:
put时间复杂度:O(1)
remove时间复杂度:O(1) ~ O(n) | O(log(N))
get时间复杂度:O(1) ~ O(n) | O(log(N))
containsKey时间复杂度:O(1) ~ O(n) | O(log(N))
3.TreeMap:
get时间复杂度:O(log(N))
containsKey时间复杂度:O(log(N))
put时间复杂度:O(log(N))
remove时间复杂度:O(log(N))
特点
Hashtable:无序,线程安全
HashMap:无序,线程不安全
LinkedHashMap:保持插入顺序,线程不安全
TreeMap:保持Key的自然顺序或指定比较顺序,线程不安全
本文深入解析了Java集合框架中四种主要的数据结构:Hashtable、HashMap、LinkedHashMap和TreeMap的底层实现、时间复杂度及特性。从数组+链表的基础到完全二叉树的高级应用,再到线程安全性和数据排序,全面揭示了每种数据结构的特点和适用场景。
1596

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



