Java中的Set与hashCode
来源:互联网 发布:网络大电影排行榜 编辑:程序博客网 时间:2024/05/19 09:17
我们知道Java中的Collection分为List和Set。List中的元素是有序和可重复的,而Set中的元素无序且不可重复。
由于Set中的元素是不可重复的,在每次向一个Set中插入新的元素时,如果没有hashCode,就需要遍历整个集合检查是否已经存在该元素。这样会使Set的效率非常低下。
使用哈希算法可以提高从元素集合中查找一个元素的效率。根据集合元素的hashCode来将元素划分成几组,每一组对应一块存储区域。根据元素的hashCode可以找到该元素的存储区域。
首先我们必须保证如果两个元素相同(equals),它们的hashCode必定相同。
向一个Set集合插入新元素时,要通过元素的hashCode来确定这个元素存放的位置。如果这个位置上没有元素,就直接存储在这个位置上,否则就散列到其他地址。
因此在插入新元素时,我们只需与根据hashCode找到的存储区域中的元素进行对比。这样提高了Set插入元素的效率。
我们在重写对象的equals方法时,必须重写hashCode。
不使用Set的时候,大部分情况下我们并不需要关注hashCode。但是我们没有理由不去重写它。
因为如果使用到了Set,在使用equals方法时,我们是使用hashCode来找到对应的存储区域,然后再存储区域中查找和对比。如果两个元素的hashCode不同,它们很可能存储在了不同的区域上,这样它们就永远不可能相等了。
- Java中的Set与hashCode
- Java中的Set与hashCode
- Java中的hashCode()与equals()
- java中的hashcode()与equals()
- java中的equals与hashCode
- java 中的 equals、==与hashcode
- Java中的equals()与hashCode()方法详解
- java中的set与get
- java中的hashcode
- java 中的hashcode&equals
- java中的hashCode方法
- java中的hashCode
- Java中的hashcode
- Java中的HashCode方法
- Java中的hashcode方法
- java中的hashcode方法
- Java中的HashCode
- Java中的hashcode方法
- C/C++小知识
- 进制转换
- mac os x下安装xdebug
- 函数可重入性
- [查好友ios1.0版发布总结V]开发流程规范化
- Java中的Set与hashCode
- Safari各版本的Javascript调试功能
- FireBug 调试JS入门 —如何调试javascript
- 未解决的问题:log4j总是在加载的时候
- 基于命令行的java应用程序样例
- 河海大学X-GIS研究组开博辞
- 1948-2006:哈佛大学地理系的灭亡与地理学的重生
- SQL 获取汉字笔画数
- 基于Proteus的ARM7 LPC21XX学习笔记一、在Realview MDK 4.12下新建一个项目文件