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不再被外部引用,它就可以被垃圾回收器回收。

  • 相关阅读:
    消费券
    .net Core 用户登入身份验证简单的demo
    微信阅读. 电脑版. 标记上一页阅读到的位置. 油猴(Tampermonkey)插件
    Docker.控制台程序.发布
    Docker.容器管理
    Docker.镜像管理
    RestSharp 加号变空格 + HTTP 请求
    在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误
    数据库.Sqlserver.重建索引
    数据库.索引Vs树
  • 原文地址:https://www.cnblogs.com/0820LL/p/9644083.html
Copyright © 2011-2022 走看看