某處在stackoverflow我找到解決方案關於2個值。HashMap 1鍵2值 - 使用containsvalue
public class Pair<A, B> {
A first = null;
B second = null;
Pair(A first, B second) {
this.first = first;
this.second = second;
}
public A getFirst() {
return first;
}
public void setFirst(A first) {
this.first = first;
}
public B getSecond() {
return second;
}
public void setSecond(B second) {
this.second = second;
}
}
public static HashMap<Player, Pair<HorseModifier, LivingEntity>> P_and_h =
new HashMap<Player,Pair<HorseModifier, LivingEntity>>();;
而問題:
P_and_h.put(p, new Pair(hm, hm.getHorse()));
if(P_and_h.containsValue(HorseModifier))` - dont working (this is first object)
'containsValue'方法將檢查一個匹配的值,在這種情況下它是一個'Pair',而不是'HorseModifier'。並用小寫字母開始變量名稱。而且,你似乎正在用類名稱調用'containsValue'。 – keyser
..因爲'Pair'沒有實現'equals',它只會在找到包含的值,如果它是完全相同的實例(=你不能創建另一個'new Pair(hm,hm.getHorse())'這是一個不同的實例) – zapl
此外,它建議覆蓋equals類和hashCode(在這種情況下不需要,但不錯的做法)爲您的Pair類。 – rocketboy