私の質問は非常に単純だと思いますが、解決策が見つからなかったので、ここで質問することにしました。私が必要としているのHashMap
は、次のようなカスタムキータイプでを作成することです。
HashMap<Pair<Integer, Integer>, StrategyPoint> myMap = new HashMap<Pair<Integer, Integer>, StrategyPoint> ();
HashMap
ただし、停止が適切に機能しなくなるため、ここで何かが欠落しています。まず、キーが一意でなくなり、同じ値を持つペアの別のインスタンスがで見つかりますkeySet
。また、contains key関数は、私が想定しているようには機能しません:)。
私は明らかに何かが恋しいので、Pair
クラスのインスタンスを比較する方法を何らかの方法で定義する必要があります。compareTo
ただし、クラスにComparable withを実装しようとしましたが、Pair
それでも機能しません。助言がありますか?
私の元のコードはちょっと面倒で読みにくいので、ここで問題を説明するためだけに例を作成しました。
コードは次のとおりです。
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));
実行の結果は次のとおりです。
false
true
私はそれをデバッグし、サーチャーインスタンスは適切に入力されていますがHashMap
、その中にそれを見つけることを拒否しているようkeySet
です。