hashcode () против toString (). hashcode (); - PullRequest
1 голос
/ 20 марта 2020

Просто пытаюсь обсудить и понять разницу между приведенными ниже кодами.

a>

SortedSet<String> set = new TreeSet<>();
set.addAll(str);
int hashcode= set.toString().hashCode();

b>

SortedSet<String> set = new TreeSet<>();
set.addAll(str);
int hashcode = set.hashCode();

Я проверил, если вы поместив один и тот же строковый элемент в оба набора в любом порядке, возвращаемое значение хеш-кода будет одинаковым. Просто хотел знать, является ли условие более безопасным, чем

1 Ответ

3 голосов
/ 20 марта 2020

Первый фрагмент преобразует набор в строку (потенциально тяжелая операция), а затем хэширует его. Второй хэширует набор напрямую.

Так как равные множества будут генерировать одинаковые строки и одинаковые хэши, оба метода технически приемлемы, но действительно избыточно сначала преобразовывать набор в строку (метод a) - нет никакой выгоды в использовании, и все, что вы делаете, это тратить ресурсы на преобразование в строку.

...