需求背景:
List<String> list = new ArrayList<>();
list.add("aaa");
list.add("bbb");
list.add("ccc");
列表如上,想要输出形如:aaa,bbb,ccc这样的字符串怎么做?
传统写法
StringBuilder stringBuilder = new StringBuilder();
for (String item : list) {
stringBuilder.append(item).append(",");
}
System.out.println(stringBuilder.substring(0, stringBuilder.length()-1));
lambda写法
System.out.println(list.stream().collect(Collectors.joining(",")));
如果想要前后加中括号
System.out.println(list.stream().collect(Collectors.joining(",", "[", "]")));
int列表怎么处理
List<Integer> list2 = new ArrayList<>();
list2.add(100);
list2.add(200);
list2.add(300);
System.out.println(list2.stream().map(String::valueOf).collect(Collectors.joining(",")));
通过查看源码,我们可以看到Collectors.joining()内部是通过StringJoiner(jdk1.8新增的)实现的,StringJoiner内部又是由StringBuilder实现的,于是我们可以通过一行代码实现列表的格式化字符串形式的输出。