Hash(散列函数)

广义的Hash

把任意长度的输入通过散列算法变换成固定长度的输出,该输出值就是散列值。
特点:

  1. 压缩映射,hash值远远小于输入值
  2. 不能反向。不同的输入可能会散列出相同的输出

总结:将任意长度的消息压缩到某一固定长度的消息摘要的函数。

Java的Hash值

  1. hash值用来在散列存储结构中确定对象的存储地址,以来提高对象的查询效率。
    如HashMap、HashTable等。
    2、如果两个对象相同,那么两者的hash值相等。
    But如果两个对象的hash值相等,但那不一定两个对象相同。
    3、如果要重写对象的equals的方法,那么尽量重写对象的hashCode方法。

String的hashCode

在了解hash值的含义后,在进行hash计算时,我们希望尽量减小生产重复hash值的概率,使得数据更离散一些。(因为如果重复的hash值太多,散列存储结构中同一hash值映射的对象也会更多,导致降低查询效率。

你可能感兴趣的:(Hash(散列函数))