有没有办法使用地图或任何其他集合,允许我们存储重复的密钥
具有不同的价值......
而不是使用List来存储同一个键的多个值?
答案 0 :(得分:8)
使用Google Guava的MultiMap。这允许使用单个键
的多个值答案 1 :(得分:2)
地图不允许您拥有重复的密钥。这甚至没有意义。
可能的解决方案是拥有list
的{{1}}(收藏)。只是去吧。如果有什么事阻止你,请告诉我们。
答案 2 :(得分:2)
有一个Multimap
概念。例如在番石榴中。 Multimap in guava
但它不是Collection框架的一部分。
如果你不喜欢像Map<String, List<Item>>
这样的签名,你可以轻松地用对象包裹它。例如。
class Items {
private List<Item> items;
public void add(Item i) {}
}
当然,无法通过地图实例添加项目map.add("key", item)
答案 3 :(得分:0)
下一个怎么样?:
Map<String, List<String>> map = new HashMap<>();
// add "key1" and "value1"
if (!map.containsKey("key1")) {
map.put("key1", new ArrayList<String>());
}
map.get("key1").add("value1");
// add "key1" and "value2"
if (!map.containsKey("key1")) {
map.put("key1", new ArrayList<String>());
}
map.get("key1").add("value2");
List<String> values = map.get("key1");
这是字符串,但可以是任何类型。而且您不需要额外的库。
答案 4 :(得分:0)
您可以使用apache commons集合中的MultiMap