В деталях реализации HashMap
я могу прочитать:
When using comparators on insertion, to keep a
* total ordering (or as close as is required here) across
* rebalancings, we compare classes and identityHashCodes as
* tie-breakers.
Если у меня есть константа hashCode
и штраф equals
, и мой класс не реализует Comparable
, как именно эторазорвет связи и как будет построено дерево?
Я имею в виду - ведро преобразуется в дерево и будет использовать System.identityHashCode
, чтобы разорвать связь.Затем я попытаюсь вызвать метод containsKey
с другим экземпляром (который будет иметь те же hashCode
и a.equals(b) == true
), он будет иметь другой identityHashCode
, поэтому возможно, что дерево будет пройдено не тем узлом (слева)вместо права) и он не найдет ключ?
Я что-то упустил или это нормальное поведение?