.hashCode方法的作用
2024-10-19 11:41:37
对于包含容器类型的程序设计语言来说,基本上都会涉及到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
最新文章
- 智能指针shared_ptr的用法
- Python之路----------基础 一(数据类型、变量、基本语法、流程控制)
- windbg命令----!idt
- 使用NodeList
- salesforce 零基础开发入门学习(三)sObject简单介绍以及简单DML操作(SOQL)
- 浅谈Eclipse的更新、升级和MyEclipse插件的安装方法
- Android Studio下载与安装
- 表单设置line-height,在ff中的不垂直居中问题???
- 【DRP】删除递归树的操作
- (二)给IE6-IE9中的input添加HTML5新属性-placeholder
- nginx笔记2-负载均衡
- 用Python登录好友QQ空间点赞
- STL--关系型容器
- javascript: Element.getBoundingClientRect() 获取元素在网页上的坐标位置
- hive_连续天次计算
- spring-boot json数据交互
- AltiumDesigner 网络标号放置技巧
- 【DB2】索引
- 洛谷 P2048 [NOI2010]超级钢琴 解题报告
- 联想服务器thinkserver rd650安装 windows server 2008 r2
热门文章
- OneNET麒麟座应用开发之五:获取加速度传感器ADXL345数据
- Java基础99 待续
- js子节点children和childnodes的用法(非原创)
- TP5.1:request请求对象(使用四种方式获取)
- navicat连接sqlserver数据库提示:未发现数据源名称并且未指定默认驱动程序
- 【HTTP】 Fiddler简介
- python 全栈开发,Day30(纸牌游戏,异常和错误,异常处理)
- POJ 3421 X-factor Chains (因式分解+排列组合)
- mongo3.x配置说明
- 手动卸载Office2010