黑马程序员技术交流社区

标题: hash值是做什么的 [打印本页]

作者: 文涛    时间: 2013-11-6 16:42
标题: hash值是做什么的
看到毕老师的视屏,说hashset中会先比较hash值,这个值有什么用,在java中是按什么的
作者: Mr.Z.Lee    时间: 2013-11-6 16:48
HASH是根据文件的内容的数据通过逻辑运算得到的数值, 不同的文件(即使是相同的文件名)得到的HASH值是不同的, 所以HASH值就成了每一个文件在EMULE里的身份证. 不同HASH值的文件在EMULE里被认为是不同的文件,相同的HASH值的文件的内容肯定是完全相同(即使文件名不同). HASH值还有文件校验的功能,相当于文件的校验码. 所以还可以用来检查文件下载是否正确(所以EMULE下载完毕时,都会在HASH文件一遍, 检查文件是否出错)
作者: 那得好好想想    时间: 2013-11-6 17:48
set是不允许重复对象添加的,这个应该知道吧,那么系统根据什么来判断是否重复呢?就是根据这个hash值。每个对象都有一个hash值。如果set中你要添加一个同样内容的数据,那么hash值相等,就会覆盖之前的的对象。
另外,可以查看jdk,在set集合中,有hashCod();和equals();方法,
hashCod()返回 set 的哈希码值。hash值不是随机生成的,它有一定的规律,主要是根据对象中的内容或变量计算得出。例如字符String类型,如果字符两个字符对象中的内容都是abc,那么他们的hash值肯定一样,也就是说,equals();相等,则hash值一定相等。


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




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2