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的自然顺序或指定比较顺序,线程不安全