如果可能的话,我基本上想要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,arraylist(v2))
将arraylist中的位置作为V1但是这将永远搜索我是否想要找到呼叫者称为特定被叫者的内容。
我也读过这个HashMap with multiple values under the same key,但我不明白该怎么做。
答案 0 :(得分:2)
为您的值创建一个bean,如下所示
class Value {
VariableType val1;
VariableType val2;
...
}
然后我们可以创建如下的地图
Map<K,Value> valueSample = new HashMap<K,Value>();
valueSample .put(new K(), new Value());
我们需要通过setter或构造函数
设置Value calss中的值答案 1 :(得分:0)
如果所有值均为<V1, V2>
,则可以使用Entry
作为值:
Map<K,Map.Entry<V1,V2>> sample = new HasMap<K,Map.Entry<V1,V2>>();
创建Entry<V1,V2>
并将其与相关密钥放在一起。
另一个解决方案(甚至更好的解决方案)是创建自己的值类。
答案 2 :(得分: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);
答案 3 :(得分:0)
一种解决方案是创建一个包装器对象(在您的问题中的讨论链接中给出)来保存值v1 and v2
:
class ValueWrapper {
V1Type v1;
V2Type v2;
...
}
现在您可以将密钥映射到此包装器的实例:
Map<K,ValueWrapper> sample = new HashMap<K,ValueWrapper>();
sample.put(new K(), new ValueWrapper());