美文网首页
Hashtable,HashMap,TreeMap的区别

Hashtable,HashMap,TreeMap的区别

作者: 建瓯 | 来源:发表于2019-03-28 10:16 被阅读0次

    共同点

    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的对称,自反,传递等特性

    相关文章

      网友评论

          本文标题:Hashtable,HashMap,TreeMap的区别

          本文链接:https://www.haomeiwen.com/subject/ubvfbqtx.html