タイプの Java HashMap があり<MyType,Double>
ます。このMyType
クラスには、( foo
String 型の) およびbar
(Double 型の) 2 つのフィールドがあります。equals および hashcode メソッドは、MyType
使用専用foo
です。A
タイプのオブジェクトが与えられたMyType
ので、ハッシュマップから一致するエントリを取得する必要があります。それが意味することは
MyType A = new MyType();
A.foo = "foo";
A.bar = 0.0;
MyType B = new MyType();
B.foo = "foo";
B.bar = 1.0;
Map<MyType,Double> myMap = new HashMap<MyType,Double>();
myMap.put(B,5.0)
B
キー(および最終的にはそのバーの値)を(それらの値が同じであるため)myMap
との等価性に基づいて抽出する必要があります。つまり、次の形式の関数です。A
foo
Double getBar(MyType type, Map<MyType,Double> map)
そのような
getBar(A,myMap) returns 1.0
それを行う最善の方法は何ですか?そもそもこれがどのように設計されているかはよくわかりませんが、myMap
非常に巨大になることが予想されるため、これを行う効率的な方法を探しています.
更新: ここでの少し大きなコンテキストはこれです。MyType オブジェクトのセットがあります (S とします)。外部関数がそれに作用し、myMap と呼ばれる HashMap を作成します。この HashMap は、Double 型の数量を計算し、セット内の各オブジェクトに関連付けます。また、セット内の各オブジェクトのバー フィールドも更新します。返されるのは myMap です。次に、元のセット S の各要素を更新して、各要素のバーの値が、返された myMap の対応するエントリのバーの値に置き換えられるようにする必要があります。したがって、SI の各 A に対して、myMap の対応する B を読み取り、そのバーを取得してから、A のバーを B のバーと同じになるように設定する必要があります。