Map<Object,Pair<Integer,String>> multiMap = new HashMap<Object,Pair<Integer,String>>();
其中Pair是一个参数类
public class Pair<A, B> {
A first = null;
B second = null;
Pair(A first, B second) {
this.first = first;
this.second = second;
}
public A getFirst() {
return first;
}
public void setFirst(A first) {
this.first = first;
}
public B getSecond() {
return second;
}
public void setSecond(B second) {
this.second = second;
}
}
Map<String, List<String>> hm = new HashMap<String, List<String>>();
List<String> values = new ArrayList<String>();
values.add("Value 1");
values.add("Value 2");
hm.put("Key1", values);
// to get the arraylist
System.out.println(hm.get("key1"));
# 1 楼答案
标准Java HashMap不能为每个键存储多个值,您添加的任何新条目都将覆盖上一个条目
# 2 楼答案
有库可以做到这一点,但最简单的纯Java方法是创建
Map
个List
,如下所示:# 3 楼答案
听起来你在找一个multimapGuava有各种^{} 实现,通常通过^{} 类创建
我建议,使用该实现可能比滚动自己的实现、确定API应该是什么样子、在添加值时仔细检查现有列表等更简单。如果您的情况特别厌恶第三方库,那么这样做可能是值得的,但除此之外,Guava是一个极好的库,它可能也会在其他代码方面帮助您:)
# 4 楼答案
例如:
其中
Pair
是一个参数类# 5 楼答案
你有这样的东西吗
如果是这样,您可以遍历ArrayList并使用ArrayList获取您喜欢的项。得到(我)
# 6 楼答案
这是我在一个类似问题的answer中发现的
结果:[值1,值2]