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());
逗号=“,”;
}
谁写的逗号?