当键的长度相同时,哈希函数返回相同的哈希

时间:2019-06-15 22:21:49

标签: java algorithm hash

我正在寻找Java中的哈希函数,该函数对于具有相同长度的键返回相同的哈希值。

            int index1 = hashmap.hash("xxx");
            int index2 = hashmap.hash("yyy");
            assertEquals(index1, index2);

我正在使用此功能:

public int hash(String x) {
    int hashCode = x.hashCode();
    return (int) ( ( Math.abs( hash_a * hashCode + hash_b) % p_prime ) % capacity ); 
}

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案只是将输入字符串的长度传递给任意哈希函数。

当您传递字符串的长度时,可以通过对函数进行如下更改来完成:

   modelBuilder.Entity<RegistoGeometria>()
            .HasOne(rg => rg.Registo)
            .WithMany(r => r.RegistosGeometria)
            .OnDelete(DeleteBehavior.Restrict);