散列的价值在于速度:散列使得查询得以快速进行,由于瓶颈位于键的查询速度,因此解决方案之一就是保持键的排序状态,然后使用Collections.binarySearch()
进行查询。
散列则更进一步,它将键保存在某处,以便能够快速找到,存储一组元素最快的数据结构是数组,所以使用它来表示键的信息(键的信息,而不是键本身),但是因为数组不能调整容量,因此就有一个问题:我们希望在Map
中保存数量不确定的值,但是如果键的数量被数组的容量限制了,该怎么办呢?
答案就是:数组并不保存键本身,而是通过键对象生成一个数字,将其作为数组的下标,这个数字就是散列码,由定义在Object
中,且可能有你的类覆盖的hashCode()
(在计算机科学的术语中称为散列函数)方法生成。
Java散列和散列码
最新推荐文章于 2023-04-05 15:10:37 发布