哈希表,也叫做散列表,它通过哈希码直接找到指定数据。就和数组中通过索引获取元素一样,很快。
特点:
1、添加快
2、查找快
3、唯一
4、无序
1、hashCode方法
它返回一个整数,是数据的哈希码。
2、散列算法
它指通过数据的哈希码,计算出数据在哈希表中位置。
例子,除留取余法:
一个哈希表长度为10,则位置有【0,1,2,3,4,5,6,7,8,9】,一个数据哈希码为1001,散列算法为 y = x % 10 。
则:1001 %10 = 1,即1001应该存放在哈希表中1的位置。
3、哈希表中添加数据
步骤:
1、使用hashCode方法获取数据的哈希码。
2、使用散列算法处理哈希码,得到数据存储的位置。
3、判断:
(1)、无冲突:该位置为空,添加成功。
(2)、发生冲突:位置已经有数据了,使用 equals 方法判断位置中是否有重复的元素。
有相同数据:添加失败
没有相同数据:添加成功
4、哈希表中查找数据
步骤:
1、使用hashCode方法获取数据的哈希码。
2、使用散列算法处理哈希码,得到数据存储的位置。
3、判断:
(1)、无数据:数据不在表中。
(2)、存在数据:依次使用 equals 方法对比数据。
5、装填因子
它指的是要存放数据的个数和哈希表的长度之比。
当装填因子为0.5的时候,哈希表性能达到最优。
6、减少冲突
提高哈希表的效率。
方式:
1、改善装填因子
2、改善散列算法
3、改善处理冲突的方法
Java中的HashSet、HashMap、HashTable(已过时)底层都使用哈希表实现。
标签:数据,位置,算法,哈希,表中,散列 From: https://www.cnblogs.com/lurenjia-bky/p/16966780.html