【发布时间】:2018-01-29 19:58:44
【问题描述】:
我为HashMap 字段实现了toString,如下所示:
public class Bar {
private HashMap<String, Foo> m = null; // Foo is a class with defined toString method
@Override
public String toString() {
String eol = System.getProperty("line.separator");
final String[] ret = {""};
m.forEach( (k,v) -> ret[0] += v + eol);
return ret[0];
}
}
如何用 java 8 流实现这个功能?以下是我尝试不成功的示例(仅用于说明我想要的)
m.values().stream().collect(Collectors.joining()).
m.entrySet().stream().collect(Collectors.joining()).toString();
【问题讨论】:
-
你为什么要为
ret创建一个数组,然后只使用它的第一个元素?为什么不使用String数组而不是String?或者,更好的是,StringBuilder。 -
@tradeJmark:实际上它是由 inellij Idea 在使用 String 出错后制作的
-
啊。 IntelliJ 要求您在这里做的基本上是对该语言的破解。幸运的是,将其修复为不被黑客攻击的答案是使用
Stream,所以你走在正确的轨道上:)
标签: java string java-8 hashmap