내 질문은 아주 간단하다고 생각하지만 해결책을 찾지 못해서 여기서 물어보기로했습니다. 내가 뭘해야 할 것은이 같은 사용자 지정 키의 형태는 HashMap을 만드는 것입니다 : HashMap의가 제대로 작동하지 때문에 내가 여기서 뭔가를 놓치고 그러나자바 HashMap을 맞춤 키 유형으로 올바르게 작동시키는 방법은 무엇입니까?
HashMap<Pair<Integer, Integer>, StrategyPoint> myMap = new HashMap<Pair<Integer, Integer>, StrategyPoint>();
. 먼저 Key는 고유하지 않으며 동일한 값을 가진 Pair의 다른 인스턴스가 keySet에서 찾을 수 있습니다. 또한 contains key 함수는 내가 가정 한 방식대로 작동하지 않는다. 내가 뭔가를 분명히 놓친다면 Pair 클래스에서 내 인스턴스를 비교하는 방법을 어떻게 든 정의해야 할 가능성이 높습니다. 그러나 compareTo 내 쌍 클래스에서 구현하는 tryed 및 여전히 작동하지 않습니다. 어떤 제안?
원본 코드가 다소 엉망이며 읽고 쓸모 없기 때문에 여기에서 내 문제를 설명하기위한 예제를 만들었습니다.
HashMap<Pair<Integer, Integer>, StrategyPoint> myMap = new HashMap<Pair<Integer, Integer>, StrategyPoint>();
Pair<Integer, Integer> myPair = new Pair<Integer, Integer>(2,2);
StrategyPoint myPoint= new StrategyPoint(2, 2, 5, 5, false);
myMap.put(myPair, myPoint);
Pair<Integer, Integer> searcher = new Pair<Integer, Integer> (0,0);
searcher.setFirst(2);
searcher.setSecond(2);
System.out.println(myMap.containsKey(searcher));
System.out.println(myMap.containsKey(myPair));
수행 한 결과는 다음과 같습니다 :
거짓
사실
이내가 디버그 자신과 수색자 인스턴스가 제대로 채워에 beeing되어 있습니다 그러나 그것이 HashMap에 보인다 여기에 코드입니다 그것의 KeySet에서 그것을 찾기를 거절한다.
도움 주셔서 감사합니다.
모든 Java 초보자는 조만간 또는 그 후에 equals/hashCode 문제에 직면하게 될 것입니다! – gd1
나는 표준 문제를 알고 있었다. 감사합니다 그것을 시도 할 것이다!. –
@ gd1 on point !!! –