考虑为,
HashMap<Integer, String> map = new HashMap<Integer, String>();
我想要商店,
map.put(1, "Val-1");
map.put(2, "Val-2");
map.put(1, "Val-3");
map.put(1, "Val-4");
map.put(3, "Val-5");
.
.
. it goes like this
当我给它时,它应该给出与键相关的所有值。我该怎么解决呢如果您知道其他可能性,请告诉我
,不是一个HashMap答案 0 :(得分:6)
您可以使用HashMap<Integer,List<String>>
。
您可以将列表中共享相同键的所有值分组。
HashMap<Integer,List<String>> map = new HashMap<>();
List<String> l = new ArrayList<>();
l.add("Val-1");
l.add("Val-3");
l.add("Val-4");
map.put(1, l);
l = new ArrayList<>();
l.add("Val-2");
map.put(2, l);
l = new ArrayList<>();
l.add("Val-5");
map.put(3, l);
答案 1 :(得分:0)
在Java中,Map
不允许重复键。因此,要关联多个值,您需要为每个键分配一个List
。另外,请注意我在参考端使用接口类型的方式。
Map<Integer, List<String>> map = new HashMap<Integer, List<String>>();
现在您只需要创建自己的put()
版本添加,而不是<{1}}。
List
以下是添加和显示多个值的方法
public void add(Integer key, String val) {
List<String> list = map.get(key);
if (list == null) {
list = new ArrayList<String>();
map.put(key, list);
}
list.add(val);
}
输出:
add(1, "one");
add(2, "two");
add(2, "three");
for(Map.Entry<Integer, List<String>> entry: map.entrySet()) {
System.out.println(entry.getKey() + " = " + entry.getValue());
}