目前我们学过的只有HashSet和HashMap。Hash一般翻译做“散列”,也有直接音译为“哈希”的。
HashSet的特点是不能存放重复数据,无序,最大特征就是没有下标。那么它的数据是否重复是怎么来判断的呢?这里便又多了一个hashCode方法,HashSet在判定两个元素是否重复的时候,会调用hashcode方法和equals方法,在两个对象的hashcode方法返回同一个值,并且equals为true的情况下,它才会认为这是两个重复对象。它是先调hashcode,如果值一样,再调用equals。
HashMap的特点是集合中的元素是以键值对的形式成对出现的。键值对(K-V),K---Key,V---Value,每一个元素在放置到容器中的时候,除了要放置它本身以外,还需要指定它的键是多少,因为我们需要通过它的键来删、改、查它里面存放元素,一个容器中每个元素的键不能重复。
在我看来,哈希就是一个过程,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值。 主要用于信息安全领域中加密算法。
Hash表也称散列表,也有直接译作哈希表,是一种特殊的数据结构,它能快速定位到想要查找的记录,而不是与表中存在的记录的关键字进行比较来进行查找。
Hash函数就是把任意长的输入字符串变化成固定长的输出字符串的一种函数,输出字符串的长度称为hash函数的位数。
hash函数的构造准则:简单、均匀
1、 散列函数的计算简单,快速;
2、 散列函数能将关键字集合K均匀地分布在地址集{0,1,…,m-1}上,使冲突最小。
什么是Hash?
最新推荐文章于 2022-09-13 23:00:18 发布