码迷,mamicode.com
首页 > 其他好文 > 详细

HashMap 原理分析

时间:2016-05-04 19:16:57      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:java基础

HashMap中key的存放原理:

          1.创建Set集合 HashSet 其容器数组默认大小为16 也就是将容器分为16个区域,每一个区域存放的是链表.

        2.现有一个元素想存放到set集合中,第一步要确定要放在哪个区域里面.方法是先取元素的hashcode,将这个值与1111进行与运算

所得到的值一定是0~15之间的数,这个数字决定了该元素会存放在set集合中的哪个区域里面.

        3.已经决定了存放在那个区域,就检查这个区域的使用情况,如果该区域没有任何元素,就将新元素直接放置在这个区域中.

        4.如果该区域里面有元素,就要判断要加入的元素与区域中每个元素是否有相同的,遍历该区域的链表 先通过hashcode比较 再通过 equals方法比较

元素放到的区域值是如何计算的:

    1.获得元素的哈希码,是一个32位的整数 将其无符号右移16位 使其高位变低位 再与原先低位的值进行亦或运算(对应位相同为0不同为1)

    2.将上一步得到的值与二进制15进行与操作 得到0~15之间的值



HASH(散列)的意义

    hash的意义是将对象的存放位置在内存中打散,又不损失检索的速度.


HashMap 原理分析

标签:java基础

原文地址:http://pwitachi.blog.51cto.com/5057345/1770103

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!