在调用Map的构造函数时,java中有没有办法在Map中指定元素?
作为我的意思的一个例子,假设我想要一张以下键/值对的地图:
foo: bar
baz: bat
我可以将它们添加到现有地图中,如下所示:
Map<String, String> myMap = new HashMap<String, String>();
myMap.put("foo", "bar");
myMap.put("baz", "bat");
有没有办法做这样的事情(从javascript借来的对象文字代替我想要的东西):
Map<String, String> myMap = new HashMap<String, String>({"foo": "bar", "baz": "bat"});
我问的原因(如果它有所不同),是因为我想将一堆HashMaps在线传递给函数调用,如果我不必创建变量就很方便抓住它们并为每个元素添加元素,一次一个。我正在考虑使用JSON解析器并将我的地图编写为javascript对象以节省时间,但如果这确实是最佳方式,那将会有点愚蠢。
答案 0 :(得分:0)
或者,它仍然可以通过自定义类扩展HashMap来实现。
创建一个具有适当验证的类(我已经考虑了偶数条目以形成键,值集):
public class MyMap extends HashMap<String, String> {
public MyMap(String[] args) throws Exception {
if ((args.length % 2) != 0) {
throw new Exception("Key value pairs are not of required length");
}
for (int i = 1; i < args.length; i += 2) {
this.put(args[i - 1], args[i]);
}
}
}
遍历传递给构造函数的String数组并放置其值。
在主调用类中,我们只需使用String数组调用构造函数:
public static void main(String... args) {
try {
MyMap myMap = new MyMap(
new String[] { "foo", "bar", "bat", "booze" });
System.out.println(myMap.get("bat"));
} catch (Exception e) {
e.printStackTrace();
}
}
<强>输出:强>
酒
答案 1 :(得分:0)
您可以使用静态块填充地图
private Map<String, String> map;
static {
map.put("key0", "value0");
map.put("key1", "value1");
}