zoukankan      html  css  js  c++  java
  • HashMap 、HashTable、TreeMap、WeakHashMap的区别是什么

    Java为数据结构中的映射定义了一个接口java.util.Map,它有4个实现类:HashTable、HashMap、TreeMap、WeakHashMap。

    HashMap和HashTable的区别:

    1)HashMap是JDK1.2引进的一个Map接口的实现,HashTable实现Map接口的同时也继承了抽象类Dictionary。

    2)HashMap不是线程安全的,HashTable是线程安全的;就效率而言,HashMap可能高于HashTable。

    3)HashMap允许空键值(即null做为key),但是HashTable不允许空键值。

    4)HashMap去掉了HashTable的contains(),改成了containsValue()和containsKey()方法。

    5)HashMap使用Iterator遍历元素,HashTable使用Enumeration

    6)HashMap的hash数组默认大小是16,而且一定是2的指数,HashTable的默认hash数组大小是11,增加方式是old×2+1

    7)HashMap和HashTable的hash值使用不同

     HashMap和TreeMap的区别:

    1)HashMap里面存入的键值对在取出时没有固定顺序,是随机的,而TreeMap由于实现了SortMap接口,能够把它保存的记录根据键值排序,因此取出来的是排序后的键值对。

    2)HashMap有一个子类LinkedHashMap,可以实现输出顺序与输入顺序相同

     HashMap和WeakHashMap的区别:

    HashMap中的key采用的是“强引用方式”,当HashMap中的Key没有被外部引用时,只有在这个key从HashMap中删除后,才可以被垃圾回收器回收。

    WeakHashMap中可以采用的是“弱引用方式”,只要WeakHashMap中的key不再被外部引用,它就可以被垃圾回收器回收。

  • 相关阅读:
    事件-(DOM标准事件模型)
    BOM-01 (BOM的对象)
    DOM-04 (DOM常用对象)
    DOM-03 (修改2,添加删除)
    DOM-02 (查找2,修改1)
    DOM-01 (DOM基础,DOM树,查找元素1)
    boot-02 (组件<(水平/胶囊/选项卡)导航,折叠,卡片,手风琴,折叠导航栏,媒体对象,焦点轮播图,巨幕,徽章>)
    boot-01 (栅格布局/表单样式/组件1)
    AI deeplab
    AI 强化学习
  • 原文地址:https://www.cnblogs.com/0820LL/p/9644083.html
Copyright © 2011-2022 走看看