有什么方法可以使用 map 或任何其他集合来允许我们存储
具有不同值的重复键......
而不是使用 List 来存储同一个键的多个值?
问问题
4071 次
5 回答
8
使用 Google Guava 的 MultiMap。这允许具有单个键的多个值
于 2013-10-22T13:33:10.577 回答
2
Map 不允许您拥有重复的键。这甚至没有意义。
可能的解决方案是拥有list
(Collection) of values
。去吧。如果有什么阻止你,让我们知道。
于 2013-10-22T13:31:25.133 回答
2
有一个Multimap
概念。例如在番石榴中。番石榴中的多图
但它不是 Collection 框架的一部分。
如果你不喜欢这样的签名Map<String, List<Item>>
,你可以很容易地用 object 包裹它。例如
class Items {
private List<Item> items;
public void add(Item i) {}
}
当然不可能通过地图实例添加项目map.add("key", item)
于 2013-10-22T13:34:53.273 回答
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");
这与字符串,但可以是任何类型。而且您不需要额外的库。
于 2013-10-22T13:32:14.420 回答
0
您可以使用 apache commons 集合中的 MultiMap
于 2013-10-23T07:41:36.607 回答