Из JavaDoc TreeMap:
Обратите внимание, что упорядочение, поддерживаемое сортированной картой (независимо от того, явный компаратор) должен быть согласован с равными, если эта сортированная карта - это правильно реализовать интерфейс карты. (Видеть Сравнительный или компаратор для точного определения, согласующегося с равно). Это связано с тем, что интерфейс Map определяется в терминах операция равенства, но карта выполняет все ключевые сравнения, используя compareTo (или compare), поэтому два ключа, которые считаются равными этот метод, с точки зрения сортированной карты, равен. поведение сортированной карты хорошо определено, даже если ее упорядочение несовместим с равными; он просто не подчиняется генеральному контракту интерфейса карты.
Может ли кто-нибудь дать конкретный пример для демонстрации проблемы, которая может возникнуть, если упорядочение не соответствует равным? Возьмем, например, пользовательский класс, который имеет естественный порядок, т.е. Реализует Comparable. Также все внутренние классы в JDK поддерживают этот инвариант?