0

JavaでDoubleKey Mapを生成するための簡潔なアプローチはありますか? ここでいくつかの答えが見つかりましたが、私の要件を満たすものはありません。

要件:

K1、K2、Vとしましょう

  1. 特定の K1、K2 によってのみ、一意の値をターゲットにできます。つまり、次の作成は機能しません。

    Map<K2, K1> m2;
    Map<K1, V>  m1;//here K1 needs have multiple V's.
    
  2. K1 で検索すると、 が返されMap<K2,V>ます。逆の場合も同様です。

私にできる唯一のことは、作成することです

Map<K1,Map<K2,V>>
Map<K2,Map<K1,V>>

そして、常に両方を維持してください。コードは面倒なようです。

この単なるソリューションを使用しても、一度トリプル キー マップにスケールアップすると、惨事になります。

4

2 に答える 2

2

オブジェクトを作成し、それをマップのキーとして使用することをお勧めします。オブジェクトには k1 と k2 が含まれます。

public class MyObject{
K1, K2;
public MyObject(K1, K2){ this.K1= K1; this.K2=K2; }
}
@Override public int hashCode(){}// implement hashCode...
@Override public boolean equals()// implement equals
}

Map<MyObject, V> map = new HashMap<MyObject, V>();
map.put(new MyObject(K1,K2), V);

上記のコードは単なるペンと紙なので、コンパイルするには何かを追加する必要があることに注意してください

于 2013-07-22T22:31:01.060 に答える