Ну, а как иначе HashSet
выведет равенство? Это основано на hashCode/equals
. Для Set
вам понадобятся оба метода, для List
используется только equals (например, в методе, например contains
), но они определены как оба, так что вы не попадете в странные сюрпризы.
В общем случае хорошо, если вы переопределяете compareTo
из Comparable
также - это, например, используется внутри для HasMap
при обнаружении связи. Вам не нужно, но это хорошая идея, если вы когда-нибудь планируете использовать их в качестве ключей в Map
.
То, что, как я сказал, tie
используется, когда два хэш-кода равны, а HashMap
решает перейти на perfectly balanced tree node
, см. здесь
или этот ; или даже этот