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中的作用相关推荐

  1. JAVA 通过value获取Map中key的三种方法

    JAVA 通过value获取Map中key的三种方法 简介 方法描述 循环法 Stream方法 Apache Commons Collections的BidiMap 总结 简介 我们都知道Map是存放 ...

  2. ArcGIS Engine中如何获取Map中已经选择的要素呢(转)

    ArcGIS Engine中如何获取Map中已经选择的要素呢   1.使用IEnumFeturea对象获取map中的FeatureSelection,该方法可以获取所有图层的选择要素.IMap中的Fe ...

  3. MessagePack Java Jackson Dataformat 在 Map 中不使用 String 为 Key 的序列化

    当你希望在 Map 中不使用 String 为 Key,那么你需要使用 MessagePackKeySerializer 来为 key 进行序列化. 本测试方法,可以在 https://github. ...

  4. 遍历map java_Java中怎么遍历map中value值

    展开全部 遍历map中value大致有四种方法,具体每种方法的代码和解释如下:32313133353236313431303231363533e59b9ee7ad9431333365656630Map ...

  5. Java 集合List及Map中forEach()方法

    我们先看一个forEach()方法遍历List集合的例子: //使用com.google.guava包创建集合List<String> list =Lists.newArrayList(& ...

  6. java中hashcode作用_Java中hashCode的作用

    以下是关于HashCode的官方文档定义: hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表. hashCode  ...

  7. Java中hashCode的作用

    以下是关于HashCode的官方文档定义: hashcode方法返回该对象的哈希码值.支持该方法是为哈希表提供一些优点,例如,java.util.Hashtable 提供的哈希表. hashCode ...

  8. Java Map中那些巧妙的设计

    简介: 他山之石可以攻玉,这些巧妙的设计思想非常有借鉴价值,可谓是最佳实践.然而,大多数有关Java Map原理的科普类文章都是专注于"点",并没有连成"线", ...

  9. ​Java Map中那些巧妙的设计

    最近拜读了一些Java Map的相关源码,不得不惊叹于JDK开发者们的鬼斧神工.他山之石可以攻玉,这些巧妙的设计思想非常有借鉴价值,可谓是最佳实践.然而,大多数有关Java Map原理的科普类文章都是 ...

最新文章

  1. extjs editgrid增加一行
  2. BootStrap的下载及使用方法
  3. Json解析异常处理方式(JSONException: Value of type java.lang.String cannot be converted to JSONObject)...
  4. 信息系统项目管理案例3
  5. 一次堆外内存泄露的排查过程
  6. audio隐藏下载按钮
  7. 网页制作之CSS超级技巧
  8. sysbench测试
  9. mysql 分区表 知乎_mysql 分区表
  10. asp.net中引入外部js文件,容易产生中文乱码
  11. (转)Error launching Console Application PDFLaTeX ... 的解决方法
  12. qq互联登录授权php配置,开通qq互联开放平台登陆功能的步骤
  13. 提交代码到gitbub.com
  14. 【转】Oracle知识点汇总
  15. 3500字干货!精准解决3大难题,助力服装行业数字化转型
  16. 大学计算机实验教程实验6,大学计算机实验教程.第6版
  17. 如何通过域名访问服务器文件,如何通过域名访问云服务器
  18. 性能测试中怎么检测CPU情况
  19. 外文翻译原文附在后面_外文翻译与外文原文(参考格式).doc
  20. 《30岁之前的每一天》读书笔记

热门文章

  1. 面試隨筆---數字轉RMB中文 之 我的实现(含图)
  2. Gym - 101480K_K - Kernel Knights (DFS)
  3. 洛谷P2234 [HNOI2002]营业额统计(01Tire树)
  4. jq 实现发送验证码倒计时功能
  5. Iptables 表和链之间的关系【未完成】
  6. Jquery Types 小结
  7. android application 引起内存泄漏的原因
  8. css中font-family的中文字体
  9. JavaScript 中运算符的优先级
  10. 再学Android之多线程