【问题标题】:Extracting map values in multiple braces into single braces将多个大括号中的映射值提取到单个大括号中
【发布时间】:2014-07-05 06:27:40
【问题描述】:

我想将我的输出合并到一个哈希映射中。即使它在一个哈希映射中,并且每次我的程序进入循环时,它的每个输出都会在单独的大括号内的单独行中打印。我想把它放在单括号里,这样我就可以做进一步的处理了....我的输出以以下格式打印

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

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

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

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

【问题讨论】:

标签: java regex map


【解决方案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 两次以在元素之间打印逗号,但不能在最后一个元素之后。

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

【讨论】:

  • 我测试了你的代码,它显示输出为 {"YYYYYYYY"=65, "XXXXXXXXX"=9, "PPPPPP"=90, "BHYTDER"=23} 但我希望我的输出在下面格式 {YYYYYYYY=65, XXXXXXXXX=9, PPPPPP=90, BHYTDER=23}
  • 您自己的问题最初需要引号,在撰写本文时仍然需要引号。自己删除引号作为练习,这看起来像是一项家庭作业。
猜你喜欢
  • 2019-10-18
  • 1970-01-01
  • 2017-06-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-04
  • 2012-04-19
  • 2021-08-21
相关资源
最近更新 更多