为了账号安全,请及时绑定邮箱和手机立即绑定

到底什么是 hash,有什么作用,hashtable hashmap 又是什么,跟

到底什么是 hash,有什么作用,hashtable hashmap 又是什么,跟

陪伴而非守候 2019-03-20 18:15:07
如标题.我看过网上的解释,都是很官方的答案,看不明白.明白的大神能不能用通俗的语言解释.小弟感谢啦
查看完整描述

5 回答

?
富国沪深

TA贡献1790条经验 获得超9个赞

Hash中文翻译为散列,其实就是用于表示事物特征的一串特征码。
事物和其Hash其实就像人和指纹的关系,人完整的相貌有眼鼻口舌手脚等等等等,而指纹就是一个能鉴别不同人之间的特征,所以可以理解问指纹就是人的Hash
Hash的用处很多,比如验证、加密等都可以用到Hash
用于验证这就无须赘述了吧,人可以通过指纹来验证,文件、对象等等都可以通过其自身的Hash来验证,比如国外的一些网站提供下载时,一般还会提供一份下载文件的Hash(算法各有不同),以帮助下载者验证下载的文件是否正确(文件可能因为网络错误或者中间者攻击而被篡改)。不过Hash提取的只是特征,就行指纹一样,虽然说难以找到指纹一样的人,但并不代表找不到,所以Hash还存在一种问题,就是Hash冲突,即两个不同的事务其采集的特征是一致的。这种情况下我们可以采用不同的Hash算法进一步加以比较,比如指纹相同再比较一下脚纹,不过最终的办法还是真正全身比较。
而正是因为Hash只提取了事物的部分信息,所以用于加密也是非常可靠的,就如通常网站都会采用Hash来对密码进行加密,其作用就是即使密码泄露,破解者也无法知道密码到底是什么,就好像你知道指纹,但你却难以找到拥有这个指纹的人是谁。

JavaHashMapHashTable都是通过Hash算法来实现高效Map的方式,其区别仅是一些细节限制方面有所不同,和Hash算法本身并没有什么关系。


查看完整回答
反对 回复 2019-04-19
?
吃鸡游戏

TA贡献1829条经验 获得超7个赞

好吧,通俗的,如何比较2个文件是否相同,2个文件可以完全读取到的情况下逐字节是可以的,一般本地文件与网络文件比较的是hash值,通过一定hash算法算出然后比较这个简单的hash就能比较文件。同理内存中的数据仍然可以算出hash值进行比较


查看完整回答
反对 回复 2019-04-19
?
千万里不及你

TA贡献1784条经验 获得超9个赞

hash 又称 哈希,是一类函数的统称,其特点是定义域无限,值域有限


查看完整回答
反对 回复 2019-04-19
?
婷婷同学_

TA贡献1844条经验 获得超8个赞

呃,你可以把它看成一个DNA,每个生物的DNA都是不一样的(在这里请不要举双胞胎DNA一样的例子啦)。那么在计算机中,每个对象的Hash(DNA)都是不一样的。
Hashmap是一个数组和链表的结合体(在数据结构称“链表散列“)。
HashTable是比较古老的东西了..主要区别在于HashMap 允许空(null)键值(key)

查看完整回答
反对 回复 2019-04-19
  • 5 回答
  • 0 关注
  • 602 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号