0

基本的に、可能であれば1つのマップに2つの値、または同等のものが必要です。この情報を保存したい

Map<K,V1,V2> sample = new HasMap<K,V1,V2>
(Key - caller) = 26
(value 1 - callee) = 55
(value 2 - seconds) = 550
sample(26,55,550)

これを行う方法を確認する他の唯一の方法は

Map(k, arraylist(v2))

V1としてarraylistの位置を持っていますが、呼び出し元が特定の呼び出し先を呼び出したものを見つけたい場合、これは検索に永遠にかかります。

同じキーの下に複数の値を持つこの HashMapも読みましたが、これを行う方法がわかりません。

4

4 に答える 4

2

以下のような値の Bean を作成します

  class Value {
    VariableType val1;
    VariableType val2;
    ...
    }

次に、以下のようなマップを作成できます

Map<K,Value> valueSample = new HashMap<K,Value>();
valueSample .put(new K(), new Value());

セッターまたはコンストラクターによって Value calss に値を設定する必要があります

于 2013-11-05T12:09:03.467 に答える
0

1 つの解決策は、値を保持するラッパー オブジェクトを作成することです (質問のディスカッション リンクに記載されています) v1 and v2

class ValueWrapper {
V1Type v1;
V2Type v2;
...
}

これで、キーをこのラッパーのインスタンスにマップできます。

Map<K,ValueWrapper> sample = new HashMap<K,ValueWrapper>();
sample.put(new K(), new ValueWrapper());
于 2013-11-05T12:04:44.833 に答える
0

すべての値が値として<V1, V2>使用できるEntry場合:

Map<K,Map.Entry<V1,V2>> sample = new HasMap<K,Map.Entry<V1,V2>>();

Entry<V1,V2>関連するキーで作成して配置します。

もう 1 つの解決策 (さらに優れた解決策) は、独自の値クラスを作成することです。

于 2013-11-05T12:02:06.890 に答える
0

このようにすることができます。

  Map<Integer,List<Integer>> map = new HashMap<Integer,List<Integer>>();
  List<Integer> list =new ArrayList<Integer>();
  list.add(55);
  list.add(550);
  //Adding value to the map
  map.put(26, list);

  //getting value from map
  List<Integer> values = map.get(26);
于 2013-11-05T12:02:10.600 に答える