对于包含容器类型的程序设计语言来说,基本上都会涉及到hashCode。在Java中也一样,hashCode方法的主要作用是为了配合基于散列的集合一起正常运行,这样的散列集合包括HashSet、HashMap以及HashTable。

  为什么这么说呢?考虑一种情况,当向集合中插入对象时,如何判别在集合中是否已经存在该对象了?(注意:集合中不允许重复的元素存在)

  也许大多数人都会想到调用equals方法来逐个进行比较,这个方法确实可行。但是如果集合中已经存在一万条数据或者更多的数据,如果采用equals方法去逐一比较,效率必然是一个问题。此时hashCode方法的作用就体现出来了,当集合要添加新的对象时,先调用这个对象的hashCode方法,得到对应的hashcode值,实际上在HashMap的具体实现中会用一个table保存已经存进去的对象的hashcode值,如果table中没有该hashcode值,它就可以直接存进去,不用再进行任何比较了;如果存在该hashcode值, 就调用它的equals方法与新元素进行比较,相同的话就不存了,不相同就散列其它的地址,所以这里存在一个冲突解决的问题,这样一来实际调用equals方法的次数就大大降低了,说通俗一点:Java中的hashCode方法就是根据一定的规则将与对象相关的信息(比如对象的存储地址,对象的字段等)映射成一个数值,这个数值称作为散列值。

参考: https://www.cnblogs.com/dolphin0520/p/3681042.html

最新文章

  1. 智能指针shared_ptr的用法
  2. Python之路----------基础 一(数据类型、变量、基本语法、流程控制)
  3. windbg命令----!idt
  4. 使用NodeList
  5. salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
  6. 浅谈Eclipse的更新、升级和MyEclipse插件的安装方法
  7. Android Studio下载与安装
  8. 表单设置line-height,在ff中的不垂直居中问题???
  9. 【DRP】删除递归树的操作
  10. (二)给IE6-IE9中的input添加HTML5新属性-placeholder
  11. nginx笔记2-负载均衡
  12. 用Python登录好友QQ空间点赞
  13. STL--关系型容器
  14. javascript: Element.getBoundingClientRect() 获取元素在网页上的坐标位置
  15. hive_连续天次计算
  16. spring-boot json数据交互
  17. AltiumDesigner 网络标号放置技巧
  18. 【DB2】索引
  19. 洛谷 P2048 [NOI2010]超级钢琴 解题报告
  20. 联想服务器thinkserver rd650安装 windows server 2008 r2

热门文章

  1. OneNET麒麟座应用开发之五:获取加速度传感器ADXL345数据
  2. Java基础99 待续
  3. js子节点children和childnodes的用法(非原创)
  4. TP5.1:request请求对象(使用四种方式获取)
  5. navicat连接sqlserver数据库提示:未发现数据源名称并且未指定默认驱动程序
  6. 【HTTP】 Fiddler简介
  7. python 全栈开发,Day30(纸牌游戏,异常和错误,异常处理)
  8. POJ 3421 X-factor Chains (因式分解+排列组合)
  9. mongo3.x配置说明
  10. 手动卸载Office2010