Хеширование в Java отрицательных чисел

1

Таким образом, этот код генерирует хэш-коды:

int x = 33;
int hash = 7;
for (String str: list) {

    for (int o = 0; o < str.length(); o++) {
        hash = ((33*hash) + str.charAt(o));
    }

Однако некоторые из них являются отрицательными. Это потребовало, чтобы с ними обращались во время перегрузки, чтобы их можно было помещать в хеш-таблицу, так как мне тогда нужно было посмотреть на них. Не спрашивайте о том, нужно ли им решать, они просто делают, они не могут быть отрицательными числами.

Я должен сделать это с помощью этого метода:

((ak + b) mod p) mod T; where p is prime.

У кого-нибудь есть идеи?

Теги:
hash
hashcode
hashtable
negative-number

1 ответ

2

Если вы не хотите, чтобы они были отрицательными, просто добавьте

hash = Math.abs(hash)

это даст не отрицательное число. Но имейте в виду, что вы теряете бит;)

  • 0
    Я ценю ваш ответ, пожалуйста, смотрите мою редакцию поста :)
  • 0
    выглядит сложнее, почему так? и если так хм математический, другой вопрос: почему 33?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню