共同点
Hashtable ,HashMap,TreeMap 都是Map的一种实现,以键值对的形式存储和操作数据的容器类型
Hashtable 和HashMap都是基于hash表实现的,他们行为上基本一致。
Hashtable 是早期java提供的一种hash表实现
线程安全性
Hashtable是线程安全的,所以效率低
HashMap是线程不安全
实现方式
Hashtable ,HashMap是基于hash表实现的,get,put操作时间复杂度是O(1)
TreeMap 是基于红黑色实现的,get put时间复杂度为Log(n)
元素顺序
Hashtable,HashMap是无顺序的,
LinkedHashMap 是有顺序的,当内存资源需要控制的时候需要要用它
TreeMap是有顺序的,通过compator来指定顺序,或自然顺序
key和值是否能为null
Hashtable key和值不能为null
HashMap key和值能为null
hashMap内部实现
数组和链表组成的复合结构,通过hash值决定了键值对在这个数组中的寻址,hashcode相同叫做hash冲突,hashcode相同的元素被放到一个链表上,
当链表的size>8的时候将被树化,这样做的好处是加快效率。
hashcode和equals的约定
equals相等,hashcode一定相等,
重写hashcode一定要重写equals
hashcode保持一致性
equals的对称,自反,传递等特性
网友评论