Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何打印没有尾随逗号的地图?_Java - Fatal编程技术网

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

Java 如何打印没有尾随逗号的地图?,java,Java,我找不到我问题的答案,所以我希望你能帮助我 有没有一种方法可以在打印时不使用逗号 for (Map.Entry<String, String> entry : words.entrySet()) { System.out.printf("%s <=> %s, ", entry.getKey(), entry.getValue()); } for(Map.Entry:words.entrySet()){ System.out.printf(“%

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

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

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

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

boolean first = true;
for (Map.Entry<String, String> entry : words.entrySet()) {
    System.out.printf("%s%s <=> %s", first ? "" : ", ",
                      entry.getKey(), entry.getValue());
    first = false;
}
boolean first=true;
for(Map.Entry:words.entrySet()){
System.out.printf(“%s%s%s”,第一个?”:“,”,
entry.getKey(),entry.getValue());
第一个=假;
}
诀窍是认识到分隔符在序列的元素之间,而不是在它们之后

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



@如果您熟悉streams,YCF_L的解决方案会更整洁,但它的缺点是它会构造一个表示整个地图的字符串。如果映射非常大,则不需要这样做。

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

String result = words.entrySet().stream()
        .map(entry -> String.format("%s <=> %s", entry.getKey(), entry.getValue()))
        .collect(Collectors.joining(", "));
String result=words.entrySet().stream()
.map(entry->String.format(“%s%s”、entry.getKey()、entry.getValue()))
.collect(收集器。连接(“,”);
或者使用简单的循环,您可以像这样点它:

String comma = "";
for (Map.Entry<String, String> entry : words.entrySet()) {
    System.out.printf("%s%s <=> %s", comma, entry.getKey(), entry.getValue());
    comma = ", ";
}
字符串逗号=”;
for(Map.Entry:words.entrySet()){
System.out.printf(“%s%s%s”,逗号,entry.getKey(),entry.getValue());
逗号=“,”;
}

谁写的逗号?