hashmap数据结构(2)

来源:未知 责任编辑:责任编辑 发表时间:2014-01-25 11:39 点击:
for (int i = 0; i < len; i++) {  
  •                 h = 31*h + val[off++];  
  •             }  

  • Val是一个char[],存放的是字符串的各个字符;Len是字符串长度;off从0开始;h从0开始。比如一个字符串“abc”(a的ascii码是97),它的hashcode算法是: 
    h = 31 * 0 + 97 ==> h = 97; 
    h = 31 * 97 + 98 ==> h = 3105; 
    h = 31 * 3105 + 99 ==> h = 96354; 
    所以“abc”的hashCode就是96354 
    存储方式 
        列表的存储方式是基于数组,如下图: 
     

        链表的存储方式是基于指针,如下图:(单向链表)  

        HashMap的存储方式是上面两种的结合,如下图: 
     

    HashMap的存取 
        HashMap的功能是通过“键(key)”能够快速的找到“值”。下面我们分析下HashMap存数据的基本流程: 
        1、 当调用put(key,value)时,首先获取key的hashcode,int hash = key.hashCode(); 
        2、 再把hash通过一下运算得到一个int h. 
    hash ^= (hash >>> 20) ^ (hash >>> 12); 
    发表评论
    请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
    用户名: 验证码:点击我更换图片
    最新评论 更多>>

    推荐热点

    • Java编程语言的八大优点
    • JVM对象生命周期详细介绍
    • Java平台上的CRM系统
    • Java 算数测试小程序
    • Command(命令模式)
    • Java 一个简单的画图程序
    • Java环境 使用Resin在NT环境下配置JSP环境
    • Java 日历的小程序
    • Java 统计代码的小工具
    网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
    Copyright © 2008-2015 计算机技术学习交流网. 版权所有

    豫ICP备11007008号-1