有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何打印没有尾随逗号的地图?

我找不到我问题的答案,所以我希望你能帮助我

有没有一种方法可以在打印时不使用逗号

for (Map.Entry<String, String> entry : words.entrySet()) {
    System.out.printf("%s <=> %s, ", entry.getKey(), entry.getValue());
}

共 (2) 个答案

  1. # 1 楼答案

    通过使用Java stream,您可以使用:

    String result = words.entrySet().stream()
            .map(entry -> String.format("%s <=> %s", entry.getKey(), entry.getValue()))
            .collect(Collectors.joining(", "));
    

    或者使用简单的循环,您可以像这样点它:

    String comma = "";
    for (Map.Entry<String, String> entry : words.entrySet()) {
        System.out.printf("%s%s <=> %s", comma, entry.getKey(), entry.getValue());
        comma = ", ";
    }
    
  2. # 2 楼答案

    有很多方法可以做到这一点。以下是一种对当前代码的更改最少、对性能影响最小的方法:

    boolean first = true;
    for (Map.Entry<String, String> entry : words.entrySet()) {
        System.out.printf("%s%s <=> %s", first ? "" : ", ",
                          entry.getKey(), entry.getValue());
        first = false;
    }
    

    诀窍是认识到分隔符在序列的元素之间而不是在它们之后

    (有一些调整会使上面的代码稍微快一点,但由于它是写入标准输出的,因此可以合理地假设此代码的大部分成本都在输出端。)


    如果您熟悉streams,@YCF_L的解决方案会更整洁,但它的缺点是它会构造一个表示整个地图的字符串。如果地图非常大,那将是不可取的