1

stackoverflow のどこかで、2 つの値に関する解決策が見つかりました。

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)
4

4 に答える 4

1

Pairこのようなオブジェクトで確認する必要がありますP_and_h.containsValue(pair)

このマップが 1 つ以上のキーを指定された値にマップする場合、true を返します。

于 2013-08-05T11:54:14.010 に答える
0

値はタイプPairであるため、 a を検索しPairてメソッドのパラメーターとして渡す必要がありますcontainsValue()。「意味のある」等しいオブジェクト、つまり同じフィールドを含むオブジェクトを見つけたい場合はhasCode()、 andもオーバーライドする必要があります。それ以外の場合は、フィールドに関係なく、渡された参照が に存在するオブジェクトを参照しているかどうかのみをチェックします。equals()HorseModifierLivingEntityMap

于 2013-08-05T11:57:00.623 に答える