Каким будет самый быстрый и надежный (с точки зрения уникальности) способ реализации такого метода, как
public abstract String hash(String[] values);
Массив values[]
содержит от 100 до 1000 элементов, каждый из которых содержит несколько десятков символов, и метод необходимо запускать примерно 10 000 раз в секунду для разных массивов values[]
каждый раз.
Следует ли строить длинную строку с использованием буфера StringBuilder
, а затем вызывать метод хеширования для содержимого буфера, или лучше продолжать вызывать метод хеширования для каждой строки из значений[]
?
Очевидно, что для предотвращения коллизий требуется хеш длиной не менее 64 бит (например, MD5), но можно ли сделать что-нибудь проще и быстрее с тем же качеством?
Например, как насчет
public String hash(String[] values)
{
long result = 0;
for (String v:values)
{
result += v.hashCode();
}
return String.valueOf(result);
}