我需要这样的东西:
SomeMap someMap= new someArray;
someArray.put("color","red");
someArray.put("color","black");
someArray.put("brand","coca-cola")
someArray.put("brand","pepsi")
我不在乎订单是什么。 这些是我需要的方法:
放入键和值:
someArray.put("color","red");
按键获取:
someArray.get("color");
全部获取:
someArray.getAll();
全部删除:
someArray.removeAll();
我还需要能够复制结构:
someMap2 = someMap; (not shallow copy)
我该怎么做?
答案 0 :(得分:4)
关于允许重复按键的部分'在你的问题让我思考你真正想要的是MultiMap,其中给定的键可以映射到多个值。 Google会在Guava图书馆中显示此内容 - 或者您可以使用Map
实施List
推出自己的版本。这是example。
声明可能类似于:
Map<String, List<String>> map = new HashMap<String, List<String>>()
答案 1 :(得分:0)
如果您希望在没有任何外部依赖关系的情况下使用此代码,则只需以下代码即可。
package com.accessbot;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MultiValueMap {
private static final Map<String, List<String>> map = new HashMap<String, List<String>>();
public static void main(String[] args) {
put("color", "red");
put("color", "black");
put("brand", "coca-cola");
put("brand", "pepsi");
System.out.println(get("color"));
System.out.println(get("brand"));
}
public static List<String> get(String key) {
return map.get(key);
}
public static void put(String key, String value) {
if (map.get(key) == null) {
map.put(key, new ArrayList<>());
}
map.get(key).add(value);
}
}