java set在构造函数中映射内容

时间:2013-12-31 21:14:21

标签: java map constructor

在调用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对象以节省时间,但如果这确实是最佳方式,那将会有点愚蠢。

2 个答案:

答案 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");
}