zoukankan      html  css  js  c++  java
  • Java基础-hashMap原理剖析

                 Java基础-hashMap原理剖析

                                      作者:尹正杰

    版权声明:原创作品,谢绝转载!否则将追究法律责任。

     

    一.什么是哈希(Hash)

      答:Hash就是散列,即把对象打散。举个例子,有100000条数据,我们通过哈希将这10万条数据分别存放在不同的分区中,假设是平均分成了10分,那么每个分区的数据就是1万条数据,当我们要在这10万条数据中查询一条记录时,我们只需要确定这个元素在那个分区,然后去这个指定的分区查询我们想要的元素。这个过程理想情况下可以帮我们检索掉“(n-1)/n”的数据,也就是说原来要在10万条数据中查找某个元素,由于我们通过哈希分过区之后,就只需要确定元素在哪个分区,然后在这个分区中找这个元素,而查找这个元素我们只需在指定分区(1万条数据)查找即可。从而帮我们过滤掉“(n-1)/n”数据量的查询!

     

    二.HashMap的组成部分

       HashMap从本质上来说,是数据和链表的结合体,数组的长度就是桶的个数,而每个数组元素存储的都是一个链表!大致结果如下图所示:

    三.put过程分析

    1>.查看HashMap的put方法其实是调用putVal方法

    2>.查看新哈希hash(key)的过程

    3>.hashmap中判断key是否存在的算法

    4>.hashmap中判断key是否存在的详细步骤如下

     

    三.hashMap key设计过程考察

  • 相关阅读:
    Shell基础
    不错的设计类网站
    win7旗舰版 OEM KEY
    js获取url参数值
    在ASP.Net中利用JS调用Aspx页面的输出
    Virtual Router – 为易用而生的虚拟WiFi热点 (虚拟路由器)
    php5.3.8安装体验
    WIN2003+IIS6+PHP5.3.8配置
    PHP环境一键安装包 ZkeysPHP
    诡异的apache RewriteCond %{REQUEST_FILENAME} !s问题
  • 原文地址:https://www.cnblogs.com/yinzhengjie/p/9255599.html
Copyright © 2011-2022 走看看