의 TreeMap을 반복하고 .containsKey == false
을 가져 오는 이유는 무엇입니까?Java TreeMap에 키가 포함되어 있지만 containsKey 호출에서 false가 반환됩니다 (키가 변경되지 않은 동일한 객체 일지라도)
많은 반복 후에 많은 반복과 호출이 발생합니다. map.get(thisObject)
은 null
을 반환합니다. 그러나 디버그는 키 (동일한 참조, 값 및 해시)와 실제 값이 맵에 있음을 보여줍니다.@rgettman 추측으로
가 다른로 구성 되었기 때문에 일종의 Comparator
는 트리 맵의 구축시에 사용하는 사용자 정의는 (그것을 보지 않았다 프로그래머 :지도는 작은 (25 개 요소) TreeMap<Long, Double>
이 업데이트입니다 수업). 이 비교기 (내 생각) 변경 here
에서 붙여 복사 불과했다 Comparator
:
public int compare(Object a, Object b) {
if((Double)base.get(a) > (Double)base.get(b)) {
return 1;
} else if((Double)base.get(a) == (Double)base.get(b)) {
return 0;
} else {
return -1;
}
}
수정 문제
...
} else if(base.get(a).equals(base.get(b))) {
return 0;
...
합니다. 이 문제가 수백만 건의 작업 직후에 나타나는 이유는 두 개의 서로 다른 키에 대해 두 개의 유사한 값이있는 경우가 없었기 때문입니다. 문맥에서는 그렇지 않을 수 있습니다. 그래서에서 :
25151l, 1.7583805400614032
24827l, 1.7583805400614032
실패합니다.
도움 주셔서 감사합니다.
==를 .equals로 변경해보십시오. –
@RameshK 내 말은 OP가 이미 동일한 심판임을 확인했기 때문에 '=='에 문제가 없어야합니까? –
실패한 주요 값은 무엇입니까? – rgettman