2014-09-09 2 views
0

NetBeans 디버거에서 표현식을 사용하여 HashMap (backoffMap)에서 값을 확실히 반환해야하지만 null 만 가져 오는 것으로 생각했습니다. HashMap의 키에는 NetBeans에 따라 null 값이 없습니다. 스크린 샷은 내가보고있는 광기를 보여줍니다. 무슨 일이야?Java HashMap get() 메서드가 요소를 반환하지 않습니다.

enter image description here

enter image description here

이 안드로이드 API 레벨 16에서 실행 잘 모르겠어요하지만 달빅와 안드로이드 자바 라이브러리의 동작이 다를 수 있습니다, 그리고 원인이 될 수 있음을 주목해야한다 이 문제.

+5

'backoffMap.keySet(). toArray() [82] .equals (b)'는 어떨까요? 이것을 보여주는 짧지 만 완전한 프로그램을 제작할 수 있습니까? (그렇게하면 도움이 될 것입니다.) –

+1

키를 HashMap에 입력 한 후 키를 수정했을 수도 있습니다. 지도에 넣을 때와 같은 hashCode를 가지고 있지 않기 때문에 여전히 keySet에 있지만 get()은 새 hashCode에 따라 있어야하는 곳에서 찾지 않습니다. –

+0

스크린 샷은 내가 장님이 아니라면 해시 코드가 동일하다는 것을 보여줍니다. 키 클래스는 고유 한 equals() 및 hashCode()를 구현하는 PeerAddress 유형의 사용자 정의 클래스입니다. @ JonSkeet : 내 프로그램이 갑자기 종료되었거나 갑자기 연결이 끊어짐에 따라 조건을 다시 복제 할 수있을 때 (역자 주) 역방향 같음()을 수행합니다. 감사합니다. –

답변

2

개체를 HashMap에 삽입 한 후에 수정 했습니까? 그렇다면 검색중인 객체의 해시 코드가지도에 삽입되었을 때의 해시 코드와 다릅니다. 이렇게하면지도에서 개체를 찾을 수 없습니다.

+0

지금 확인해도되는지 확인할 수 있습니다. 감사합니다 ... –

+0

정말로 틀림 없습니다. 당신과 JB Nizet은 내가 생각조차하지 않은이 명백한 대답에 대해 공로를 인정합니다. –

관련 문제