Я намеренно нарушаю контракт hashCode, который говорит, что если мы переопределяем equals()
в нашем классе, мы должны также переопределить hashCode()
, и я удостоверяюсь, что нет структур данных, связанных с Hash (например, HashMap , HashSet и т. Д.) Используют его. Проблема заключается в том, что я боюсь, что методы типа removeAll()
и containsAll()
списков могут использовать HashMaps для внутреннего использования, и в этом случае, поскольку я не переопределяю hashCode()
в своих классах, их функциональность может нарушиться.
Может кто-нибудь подтвердить, действительно ли мои сомнения верны? Классы содержат много полей, которые используются для сравнения на равенство, и мне придется придумать эффективный метод, чтобы получить хеш-код, используя все из них. Я действительно не требую их в каких-либо операциях, связанных с хэшем, и поэтому стараюсь избегать реализации hashCode()