Сортировка объектов с одинаковым хеш-кодом в java - PullRequest
0 голосов
/ 29 января 2020

Например, если я хеширую целые числа и моя хэширующая функция просто (n% 10), то число 17 и число 27 приведут к одинаковому результату. Это не означает, что эти числа одинаковы.

Теперь, предполагая, что n% 10 - моя хеш-функция, мой вопрос: если я введу следующие числа в следующем порядке, как числа будут вычислены так как они отсортированы по их хэш-коду?

Числа: 10, 27, 17, 38, 58, 28, 43

1 Ответ

1 голос
/ 29 января 2020

Я думаю, вы можете быть озадачены тем, для чего hashCode() используется в Java.

Сортировка обычно не основывается на equals() и hashCode(). Они используются для определения равенства. Например, HashSet будет использовать эти два метода только для определения равенства. TreeSet также использует оба метода для определения равенства, но они не используются для сортировки элементов.

Для сортировки необходим способ сравнения объектов, и для этого (только с учетом Java SE) необходимо, чтобы класс реализовал Comparable и, следовательно, имел метод compareTo(Object o), или чтобы Comparator предоставляется для алгоритма сортировки.

Итак, если вы сортируете целые числа, используя метод из Java SE, например Arrays.sort(), то hashCode не будет учитываться, и ваши целые числа будут получены согласно compareTo() класса или предоставленного Comparator.

...