Хэш-функция возвращает тот же хеш, когда ключи имеют одинаковую длину - PullRequest
0 голосов
/ 16 июня 2019

Я ищу хэш-функцию в 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 Ответ

1 голос
/ 16 июня 2019

Простое решение - просто передать длину входной строки произвольной хеш-функции.

Поскольку вы передадите длину строки, это можно сделать, внеся небольшие изменения в вашу функцию, как показано ниже:

// hash_a, hash_b, p_prime, and capacity variables are defined in a class.
public int hash(String x) {
    int hashCode = x.length(); // this line is updated
    return (int) ( ( Math.abs( hash_a * hashCode + hash_b) % p_prime ) % capacity ); 
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...