A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 文涛 中级黑马   /  2013-11-6 16:42  /  1342 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看到毕老师的视屏,说hashset中会先比较hash值,这个值有什么用,在java中是按什么的

评分

参与人数 1黑马币 +1 收起 理由
乔兵 + 1

查看全部评分

3 个回复

倒序浏览
HASH是根据文件的内容的数据通过逻辑运算得到的数值, 不同的文件(即使是相同的文件名)得到的HASH值是不同的, 所以HASH值就成了每一个文件在EMULE里的身份证. 不同HASH值的文件在EMULE里被认为是不同的文件,相同的HASH值的文件的内容肯定是完全相同(即使文件名不同). HASH值还有文件校验的功能,相当于文件的校验码. 所以还可以用来检查文件下载是否正确(所以EMULE下载完毕时,都会在HASH文件一遍, 检查文件是否出错)

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
set是不允许重复对象添加的,这个应该知道吧,那么系统根据什么来判断是否重复呢?就是根据这个hash值。每个对象都有一个hash值。如果set中你要添加一个同样内容的数据,那么hash值相等,就会覆盖之前的的对象。
另外,可以查看jdk,在set集合中,有hashCod();和equals();方法,
hashCod()返回 set 的哈希码值。hash值不是随机生成的,它有一定的规律,主要是根据对象中的内容或变量计算得出。例如字符String类型,如果字符两个字符对象中的内容都是abc,那么他们的hash值肯定一样,也就是说,equals();相等,则hash值一定相等。

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。哈希值是一段数据唯一且极其紧凑的数值表示形式。如果散列一段明文而且哪怕只更改该段落的一个字母,随后的哈希都将产生不同的值。要找到散列为同一个值的两个不同的输入,在计算上来说基本上是不可能的.所以说hash值是用来存储数据的一种很安全的方法

评分

参与人数 1技术分 +1 收起 理由
乔兵 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马