我的HashMap目前看起来像这样:
HashMap<MyObject, Integer> hash = new HashMap<MyObject, Integer>();
无论如何,在给定hash
对象的情况下访问密钥对象,从而使用密钥对象的方法?
答案 0 :(得分:2)
Object
作为关键类型是一个糟糕的选择。使用
equals
和hashCode
方法(重要!) String
和Integer
是现成的候选人,但您也可以实现自己的密钥类,因此您应该拥有Map<UbuKey, Integer>
并可以使用该密钥类的所有方法
答案 1 :(得分:0)
HashMap<MyObject, Integer> hash = new HashMap<MyObject, Integer>();
for(Map.Entry<MyObject,Integer> entry:hash.entrySet()){
entry.getKey().yourMethod(); //access method in key
}
这样你就可以在key中访问方法了。 entry.getKey()
返回MyObject
这是您的关键。现在,您可以在密钥中访问该方法。
答案 2 :(得分:0)
如果您获得地图密钥,则可以使用该密钥上的方法。我的建议是将实现分配给不实现的接口:)
Map<Object, Integer> hash = new HashMap<Object, Integer>();
hash.keySet().iterator().next().yourMethod();
但是请记住检查你的迭代器中是否有任何对象,并且你不能为它调用yourMethod。
答案 3 :(得分:0)
你可以但是如果方法来自你自己的对象而不是对象,你需要将你的地图更改为:
HashMap<MyObject, Integer> hash = new HashMap<MyObject, Integer>();
for(Map.Entry<MyObject, Integer> entry : hash.entrySet()) {
entry.getKey().myMethod();
}
或者将Object转换为MyObject:
HashMap<Object, Integer> hash = new HashMap<Object, Integer>();
for(Map.Entry<Object, Integer> entry : hash.entrySet()) {
((MyObject entry.getKey()).myMethod();
}
但是我不确定HashMap是您尝试做什么的最佳选择。正如@Gyro Gearless所说,对象通常不是HashMap的关键选择。