Непоследовательное естественное упорядочение для TreeMap - PullRequest
0 голосов
/ 24 апреля 2019

Можно ли создать TreeMap, в котором естественный порядок ключей не согласован (key1.equals (key2) = true, key1.compareTo (k3) = 1, key2.compareTo (key3) = -1) ? Если я изменю сравнение, чтобы этого не произошло, но будут ключи, в которых key1.equals (key2) = false, но key1.compareTo (key2) = 0 это будет хорошо?

1 Ответ

0 голосов
/ 24 апреля 2019

Вы получите непредсказуемое поведение, так как будете использовать TreeMap вне заявленных ограничений.

Интерфейс Map объявляется для использования метода equals(), а TreeMap для compareTo(). Таким образом, оба метода актуальны и должны быть последовательными, иначе вы не можете полагаться на результат. Даже если он работает в какой-то версии / реализации JVM, он может сломаться в другой.

Технически, TreeMap использует метод compareTo(), так что вы можете обойтись без compareTo(), который в порядке сам по себе, только несовместим с equals(), но я, конечно, не рекомендую!

...