【发布时间】:2017-10-04 08:13:17
【问题描述】:
我想重写以下 Java 8 代码以符合 Java 7:
System.out.println("items: " + stringList.stream().collect(Collectors.joining(", ")));
一种天真的方式是:
System.out.print("items: ");
String joiner = "";
for (String item : stringList) {
System.out.print(joiner + item);
joiner = ", ";
}
System.out.println();
有哪些替代模式可以完成这项任务?例如,是否可以使用命令模式以某种方式传递封装为对象的 print()?
【问题讨论】:
-
StringBuilder ....
-
或者干脆看一下JDK 8 StringJoiner类的源码,写一个JDK 7版本的吧
-
您的代码几乎没问题。我要做的唯一更改是分别更改
System.out.printjoiner和item,以避免不必要的字符串创建。StringBuilder在这里效率较低,因为您只需缓冲字符、创建字符串、写入另一个字符缓冲区;相反,只需直接写入最终缓冲区(就像您已经在做的那样)。
标签: java java-8 java-7 command-pattern