将多个括号中的地图值提取为单个括号

时间:2014-07-05 06:27:40

标签: java regex map

我想将输出合并到一个哈希映射中。即使它在一个哈希映射中,每次我的程序进入循环时,每个输出都在单独的大括号内的单独行中打印。我希望它在单个括号中,以便我可以进行进一步处理....我的输出以下列格式打印

    {"XXXXXXXXX",9};
    {"YYYYYYYY",65};
    {"BHYTDER",23};
    {"PPPPPP",90};

但我希望上面的输出像这样打印

{"XXXXXXXXX"=9,"YYYYYYYY"=65,"BHYTDER"=23,"PPPPPP"=90};

我想我可以使用正则表达式。是否有任何正则表达式用于删除所有句子的结束括号并用逗号替换它,并且只在末尾添加结束括号?

1 个答案:

答案 0 :(得分:1)

实施自己的打印,而不是依赖地图的toString方法:

    System.out.print("{");
    Iterator<Map.Entry<String, Integer>> iter = map.entrySet().iterator();
    while (iter.hasNext()) {
        Map.Entry<String, Integer> entry = iter.next();
        System.out.print("\""+entry.getKey()+"\"="+entry.getValue());
        if (iter.hasNext()) System.out.print(", ");
    }
    System.out.println("}");

该示例说明了如何打印单个地图。您可以在某些集合中使用类似的外部循环映射,并且还可以调用Iterator.hasNext两次以在元素之间打印逗号,但不能在最后一个元素之后打印。

这种方法允许按预期打印地图,即使它们共享某些键,可能映射到不同的值。我们可以简单地将所有映射合并为一个,但重复的键将被丢弃,只留下最后一个值合并。