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)

我看到我能做到这一点的唯一方法是

映射(k,数组列表(v2))

在数组列表中的位置为 V1,但是如果我想找到调用者调用特定被调用者的内容,这将需要永远搜索。

我也读过这个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());

我们需要通过setter或者constructor来设置Value cals中的值

于 2013-11-05T12:09:03.467 回答
0

如果所有值都<V1, V2>可以Entry用作值:

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

创建Entry<V1,V2>并使用相关键放置它。

另一种解决方案(甚至更好的解决方案)是创建自己的价值等级。

于 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 回答
0

一种解决方案是创建一个包装对象(它在您的问题中的讨论链接中给出)来保存值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 回答