Поскольку вы собираетесь использовать хеширование, вы можете попробовать числовые преобразования строк на основе значений ASCII.самой простой идеей будет
int sum=0;
for(int i=0;i<arr.length;i++){
sum+=(int)arr[i];
}
хэш-сумма с использованием четко определенных хеш-функций.Вы бы использовали хеш-функцию, основанную на ожидаемых шаблонах ввода.Например, если вы используете метод деления
public int hasher(int sum){
return sum%(a prime number);
}
, выбор простого числа, которое не близко к точной степени двух, улучшает характеристики и дает лучшее равномерное хешированное распределение ключей.
другой метод заключается вВзвесьте символы, основываясь на их соответствующей позиции.
Например: если вы используете вышеупомянутый метод, и "abc", и "cab" будут хэшированы в одном месте.но если вам нужно, чтобы они хранились в двух разных местах, укажите веса для таких мест, как мы используем системы счисления.
int sum=0;
int weight=1;
for(int i=0;i<arr.length;i++){
sum+= (int)arr[i]*weight;
weight=weight*2; // using powers of 2 gives better results. (you know why :))
}
Поскольку ваша выборка довольно большая, вы избежите столкновений с помощью механизма сцепления, а не с помощью последовательности проб.В конце концов, какой метод вы бы выбрали, полностью зависит от характера вашего приложения.