Co oznacza porównanie zgodne z równymi? Co może się stać, jeśli moja klasa nie przestrzega tej zasady?

Z JavaDoc w TreeMap:

Należy zauważyć, że uporządkowanie zachowane przez posortowaną mapę (niezależnie od tego, czy dostarczono jawnego komparatora) musi być zgodne z równymi, jeśli ta posortowana mapa ma poprawnie implementować interfejs Map. (Patrz: Porównywalny lub Komparator, aby uzyskać dokładną definicję spójną z równymi.) Dzieje się tak, ponieważ interfejs Mapa jest zdefiniowany w kategoriach operacji równości, ale mapa wykonuje wszystkie porównania kluczy przy użyciu metody compareTo (lub porównania), więc dwa klucze które są uznawane za równe według tej metody, są z punktu widzenia posortowanej mapy równe. Zachowanie posortowanej mapy jest dobrze zdefiniowane, nawet jeśli jej uporządkowanie jest niespójne z równymi; po prostu nie przestrzega ogólnej umowy interfejsu Map.

Czy ktoś może podać konkretny przykład, aby zademonstrować problem, który może wystąpić, jeśli zamawianie nie jest zgodne z równymi? Weźmy na przykład klasę zdefiniowaną przez użytkownika, która ma naturalną kolejność, tzn. Implementuje porównywalne. Czy wszystkie wewnętrzne klasy w JDK utrzymują ten niezmiennik?

questionAnswers(4)

yourAnswerToTheQuestion