使用方便的符号收集键值

时间:2011-08-14 15:10:23

标签: java collections map

我正在寻找一个类似Map的集合,它允许我以PHP / Python / JavaScript方式创建新对象:

var foo = new Foo({'foo': 'bar'})

我在Java中最接近的是HashMap:

Map<String, String> parameters = new HashMap<String, String>();
parameters.put("test", "one two");
parameters.put("foo", "bar");

这对我来说太冗长了。我想以更简单的方式记下并处理键值对。

我欢迎任何建议 - 创建自己的集合类型,为Map对象创建自己的工厂等。我只想知道写下来创建这样一个集合所需的字符数。

2 个答案:

答案 0 :(得分:3)

你有(不是很知名)double brace initialization trick

Map<String, String> Map = new HashMap<String, String>() {{
      put("test", "one two");
      put("foo", "bar");
}};

使用java 7 diamond操作符,这更简洁,请参阅:

Map<String, String> Map = new HashMap<>() {{
      put("test", "one two");
      put("foo", "bar");
}};

答案 1 :(得分:3)

我坚持使用匿名初始化程序时,我看到的一种方法是使用匿名初始化程序:

Map<String, String> parameters = new HashMap<String, String>() {{
  put("test", "one two");
  put("foo", "bar");
}};

您还可以查看Guava ImmutableMap构建器:http://guava-libraries.googlecode.com/svn/trunk/javadoc/com/google/common/collect/ImmutableMap.Builder.html

如果你想在那里稍微远一点,你可以为JSON(或者只是JSON本身和JSON库)编写一个解析器,然后将Map写成一个字符串。