A Comparator
Я использовал в своем TreeMap
нарушение поведения, которое я намеревался для этого TreeMap
. Посмотрите на следующий код:
TreeMap<String, String> treeMap = new TreeMap<>(new Comparator<String>() {
public int compare(String o1, String o2) {
return o1.toLowerCase().compareTo(o2.toLowerCase());
}
});
treeMap.put("abc", "Element1");
treeMap.put("ABC", "Element2");
То, что я думаю, что я сделал, это то, что я создал карту, которая сортируется по ее ключам, без учета регистра. Два разных элемента имеют не равные ключи (abc
и abc
), сравнение которых вернет 0
. Я ожидал просто случайного упорядочения двух элементов. Тем не менее, команда:
System.out.println("treeMap: " + treeMap);
привело к:
treeMap: {abc=Element2}
Ключ abc
был переназначен значением Element2
!
Может ли кто-нибудь объяснить, как это могло произойти, и если это действительное документированное поведение TreeMap
?