我认为我的问题很简单,但是我找不到解决方案,所以我决定在这里问。我需要的是HashMap
用这样的自定义键类型制作一个:
HashMap<Pair<Integer, Integer>, StrategyPoint> myMap = new HashMap<Pair<Integer, Integer>, StrategyPoint> ();
但是我在这里遗漏了一些东西,因为HashMap
停止正常工作。首先,Key 变得不唯一,并且可以在keySet
. 此外,包含键功能也不能像我想象的那样工作:)。
我显然错过了一些东西,更有可能我应该以某种方式定义一种方法来比较我Pair
班级中的实例。但是,我尝试compareTo
在Pair
课堂上实现 Comparable with ,但它仍然不起作用。有什么建议么?
我的原始代码有点凌乱且不友好,所以我在这里做了一个例子来说明我的问题。
这是代码:
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
.