java - 到底什么是 hash,有什么作用,hashtable hashmap 又是什么,跟 hash 有很大关系吗?

查看:172
本文介绍了java - 到底什么是 hash,有什么作用,hashtable hashmap 又是什么,跟 hash 有很大关系吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

如标题.
我看过网上的解释,都是很官方的答案,看不明白.明白的大神能不能用通俗的语言解释.小弟感谢啦

解决方案

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

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

这篇关于java - 到底什么是 hash,有什么作用,hashtable hashmap 又是什么,跟 hash 有很大关系吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆