public V put(K key, V value) {
Entry<K,V> t = root;
if (t == null) {
compare(key, key); // type (and possibly null) check
root = new Entry<>(key, value, null);
size = 1;
modCount++;
return null;
}
int cmp;
...
}
final int compare(Object k1, Object k2) {
return comparator==null ? ((Comparable<? super K>)k1).compareTo((K)k2)
: comparator.compare((K)k1, (K)k2);
}
내 응용 프로그램의 일부 버그에 직면 한 후 TreeMaps put 메서드를 디버깅해야했습니다. 내 문제는지도에 삽입 된 개체를 비교하는 것이 었습니다. 이상한 점은 FIRST 요소를 Map에 입력하면 키가 자체와 비교됩니다. 나는 그것이 왜 그렇게 작동하는지 이해할 수 없다. 모든 통찰력 (주석이 달린 "유형 (및 null 가능) 검사"외)? 왜 그들은 키가 null인지 확인하지 않을까요? 어떤 종류의 "유형"수표가 만들어졌으며 무엇을 위해서입니까?TreeMap 자바 구현 - 첫 번째 요소 넣기
자세한 설명은 http://bugs.java.com/view_bug.do?bug_id=5045147에서 확인할 수 있습니다. – Koekje