首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java相关 >

关于Hash的功用

2013-04-21 
关于Hash的作用大家来说说就是设计出哈希函数的目的是什么,除了节约空间还有什么作用? 因为可以通过array,

关于Hash的作用
大家来说说就是设计出哈希函数的目的是什么,除了节约空间还有什么作用? 因为可以通过array,map或direct-address table hash
[解决办法]
通过Hash值可以初步定位元素在数组中的位置,提高查询效率
[解决办法]

引用:
引用:通过Hash值可以初步定位元素在数组中的位置,提高查询效率
如果用map的数据结构,不是也可以高效的定位?

Hash与Map并不矛盾,Map有多种存储方式,使用TreeMap,HashMap, LinkedHashMap等。
Hash是用一个Key快速计算出存储位置,记忆的是Key,而Array需要记忆的是下标0,1,2,3,....,完全不是一个概念。
[解决办法]
hash的产生有这样一种背景——有些数据本身是无法排序的(如图像),有些数据是很难比较的(如图像)。如果数据本身是无法排序的,就不能对它们进行比较查找。如果数据是很难比较的,即使采用折半查找,要比较的次数也是非常多的。因此,哈希查找并不查找数据本身,而是先将数据映射为一个整数(它的哈希值),并将哈希值相同的数据存放在同一个位置一即以哈希值为索引构造一个数组。


在大学的数据结构教材内,貌似说了设计hash的原因。
[解决办法]
引用:
你说得没错,在这种情形下因为hash与数组下标有映射关系所以不需要遍历

但这个本身就不是平等的对比,我之前也说过的,这里强调的是hash具有“映射”功能,但我想这不是hash最主要的目的,如果想要映射,map这种数据结构也可以做到,你说是不是?


map只是一种K-V的数据结构,懂?它最终落地还是要在一个一维数组中(这里用一维数组全权代理内容了)

你map是可以通过 key 来找到value 但除了 hashMap外 其他的不是用hash的map 来定位key的过程依然是个一个遍历,,即使hashmap在hash冲突的时候也会出现小范围的遍历

热点排行