HashMap的原理和内部实现机制

----开始----
http://liyanblog.cn/articles/2012/09/28/1348814751429.html
版权所有 转载请注明出处:HashMap原理学习 - 李岩的博客

HashMap为什么快? 就是和它优雅的设计密切相关的。

HashMap<String , Double> map = new HashMap<String , Double>(2);    

  map.put("语文" , 80.0);    
   map.put("数学" , 89.0);    
  map.put("英语" , 78.2);

hashmap底层使用数据实现的   transient Entry[] table;

这里的table就是用来储数据的。

 static class Entry<K,V> implements Map.Entry<K,V> {
        final K key;
        V value;
        Entry<K,V> next;
        final int hash;}

Entry包括4个变量。

原理。1.根据key得到hashcode  方法:int hash = hash(key.hashCode());

2.根据hashcode得到对应的位置 方法:int i = indexFor(hash, table.length);

这一步很关进。可以将一个key转换成一个固定的位置。这就是为什么快的原因。

当需要get(o)的时候。只要根据上面1和2两步 就可以得到该key对应的value所在的位置(table数组中的位置)。可以快速取出value

 

总结 : hashmap快的原因:可以通过hash算法。将一个固定的key转换为它唯一对应的位置。



------来自百度百科-------

HashMap 的实例有两个参数影响其性能:初始容量加载因子
容量哈希表中桶的数量,
初始容量只是 哈希表 在创建时的容量。
加载因子 哈希表 在其容量自动增加之前可以达到多满的一种尺度。
哈希表 中的条目数超出了加载因子与当前容量的乘积时,则要对该 哈希表 进行 rehash 操作(即重建内部 数据结构 ),从而哈希表将具有大约两倍的桶数。在Java编程语言中,加载因子默认值为0.75,默认哈希表元为101 .



关于hashmap的内部实现 的神奇文章:http://alex09.iteye.com/blog/539545
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值