java中hashCode()在Map中的作用
Thinking.In.Java 笔记 20140526 14:33
1、Map很容易实现,两个数组相应位置对应就是一个Map了
2、在这种情况下,拿一个key过来如何取得对应的value呢?就是拿这个key和存放key的数组的元素用equals方法一一比较,找到key在key数组中的位置,然后取对应的value
3、考虑提升效率,就有了hashCode(),散列算法
4、如何提升的,这样存储Map,对于每一对key-value,先通过key的hashCode()算法计算出一个散列值,在一个数组的散列值(刚计算出来的)的位置上,放入这个key-value对,可以用对象打包一下(两个属性,一个key,一个value),随便都行
5、按这种方式存储Map,这时候拿来一个key,先执行hashCode()方法计算散列值,找到在数组中的位置,然后这个位置上可能有数个key-value对,再用equals方法来找到准确的那个
6、原来通过key找value时,需要线性比较所有的key,利用hashCode()方法比较的会少很多,理想的情况是,所有的key-value平均的分布在一个数组上
7、现在来看hashMap,应该就是一个数组上,每个位置最多只有一个key-value对,但是并不一定是数组中所有的位置都有一个key-value对,这个情况是最理想的情况,一般情况是,有许多空的位置,这一条是自己懂了上面的,自己悟出来的,仅供参考
8、现在来考虑通过key找一个hashMap中value的过程,首先,调用hashCode()方法计算散列值,然后equals比较相同,看各种视频也没明白到这份上,还是理解机理比较重要。
转载于:https://blog.51cto.com/18818053618/1417180
java中hashCode()在Map中的作用相关推荐
- JAVA 通过value获取Map中key的三种方法
JAVA 通过value获取Map中key的三种方法 简介 方法描述 循环法 Stream方法 Apache Commons Collections的BidiMap 总结 简介 我们都知道Map是存放 ...
- ArcGIS Engine中如何获取Map中已经选择的要素呢(转)
ArcGIS Engine中如何获取Map中已经选择的要素呢 1.使用IEnumFeturea对象获取map中的FeatureSelection,该方法可以获取所有图层的选择要素.IMap中的Fe ...
- MessagePack Java Jackson Dataformat 在 Map 中不使用 String 为 Key 的序列化
当你希望在 Map 中不使用 String 为 Key,那么你需要使用 MessagePackKeySerializer 来为 key 进行序列化. 本测试方法,可以在 https://github. ...
- 遍历map java_Java中怎么遍历map中value值
展开全部 遍历map中value大致有四种方法,具体每种方法的代码和解释如下:32313133353236313431303231363533e59b9ee7ad9431333365656630Map ...
- Java 集合List及Map中forEach()方法
我们先看一个forEach()方法遍历List集合的例子: //使用com.google.guava包创建集合List<String> list =Lists.newArrayList(& ...
- java中hashcode作用_Java中hashCode的作用
以下是关于HashCode的官方文档定义: hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表. hashCode ...
- Java中hashCode的作用
以下是关于HashCode的官方文档定义: hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表. hashCode ...
- Java Map中那些巧妙的设计
简介: 他山之石可以攻玉,这些巧妙的设计思想非常有借鉴价值,可谓是最佳实践.然而,大多数有关Java Map原理的科普类文章都是专注于"点",并没有连成"线", ...
- Java Map中那些巧妙的设计
最近拜读了一些Java Map的相关源码,不得不惊叹于JDK开发者们的鬼斧神工.他山之石可以攻玉,这些巧妙的设计思想非常有借鉴价值,可谓是最佳实践.然而,大多数有关Java Map原理的科普类文章都是 ...
最新文章
- extjs editgrid增加一行
- BootStrap的下载及使用方法
- Json解析异常处理方式(JSONException: Value of type java.lang.String cannot be converted to JSONObject)...
- 信息系统项目管理案例3
- 一次堆外内存泄露的排查过程
- audio隐藏下载按钮
- 网页制作之CSS超级技巧
- sysbench测试
- mysql 分区表 知乎_mysql 分区表
- asp.net中引入外部js文件,容易产生中文乱码
- (转)Error launching Console Application PDFLaTeX ... 的解决方法
- qq互联登录授权php配置,开通qq互联开放平台登陆功能的步骤
- 提交代码到gitbub.com
- 【转】Oracle知识点汇总
- 3500字干货!精准解决3大难题,助力服装行业数字化转型
- 大学计算机实验教程实验6,大学计算机实验教程.第6版
- 如何通过域名访问服务器文件,如何通过域名访问云服务器
- 性能测试中怎么检测CPU情况
- 外文翻译原文附在后面_外文翻译与外文原文(参考格式).doc
- 《30岁之前的每一天》读书笔记