내 클래스 Cell을 키로 사용하여 HashMap을 사용하려고합니다. 다만, HashMap에 아이템을 넣으면 (자), 그 아이템에 contains를 호출하면 (자) false가 돌려 주어집니다. 맵 문서에 따라 containsKey이 .equals을 사용하기 때문에키 기반 값을 반환하지 않는 HashMap
public static void main(String args[]) {
HashMap<Cell, String> map = new HashMap<Cell, String>();
map.put(new Cell(0,0), "Bob");
System.out.println(map.containsKey(new Cell(0,0)));
System.out.println(new Cell(0,0).equals(new Cell(0,0)));
}
이, 그것은 사실과 진실 인쇄 할 위치, 거짓과 진실 출력한다(). 내가 도대체 뭘 잘못하고있는 겁니까?
http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#hashCode()를 참조하십시오. –
또는 equals, hashCode를 전혀 구현하지 마십시오. equals를 오버라이드 (override)하는 경우, hashCode도 구현해야한다. – Anton
'hashCode()'를 오버라이드 (override)하지 않으면, 디폴트의 Object 메소드를 사용하므로 같은 값을 가지고 있어도 객체마다 다릅니다. –