2012-05-04 5 views
1

오버라이드 equals()와 hashCode()에 관한 몇 가지 해답은 자바의 HashMap에서 키와 키의 사용에 대한 필요성을 설명합니다. 내 질문은 Java KeyStroke 클래스가 HashMap의 키로 안전하게 사용 할 수 있는가하는 것입니다. 더욱이, 나는 성가신 것이 아니며 이러한 질문을 계속한다. 제공된 문 (KeyStroke가 Swing에 의해 제공된다고 생각하는)이이 문맥에서 사용하는 것이 안전한지 어떻게 알 수 있을까? equals() 및 hashCode()를 재정의합니까?HashMap의 키 스트로크 클래스

미리 감사드립니다.

답변

3

equalshashCode이 오버라이드되는지 확인하는 방법은 API입니다. hashCodeequalsKeyStroke에서 재정의되지 않지만 AWTKeyStroke입니다. 실제로 AWTKeyStroke#hashCode 상태 :

[이 개체는] 해시 테이블의 인덱스 값으로 적합합니다.

+0

실제로. @JagWire : 정답입니다. 1+ –

+0

@ 제프리 : 많은 감사합니다! AWTKeyStroke 확장이 완전히 누락 된 KeyStroke javadoc을 넘어 섰습니다. 다시 한 번 감사드립니다 ... – JagWire

2

베스트는 HashMap 키 재정의 동일와 hashCode 및 불변, 당신은 API를 확인하는 경우, 키 스트로크 (keystroke)가됩니다. 그래서 괜찮을거야.