<dependencies>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>32.0.0-jre</version>
</dependency>
<!--日志-->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.7</version>
</dependency>
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-core</artifactId>
<version>2.18.0</version>
</dependency>
<dependency>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
<version>1.4.8</version>
</dependency>
</dependencies>
public static final Logger log = LoggerFactory.getLogger(ListConvertsString.class);
public static void main(String[] args) {
List<String> list = Arrays.asList("张三", "李四", "王五", "赵六");
// StringUtils StringUtils.join(Iterable,"delimiter")
String join1 = StringUtils.join(list, ",");
// guava Joiner.on("delimiter").join(Iterable)
String join2 = Joiner.on(",").join(list);
// Java8 String.join(Iterable,"delimiter")
String join3 = String.join(",", list);
// Java8 Collectors.joining("delimiter","prefix","suffix")
String join4 = list.stream().collect(Collectors.joining(",", "[", "]"));
// 传统循环并且拼接
StringBuilder builder = new StringBuilder();
IntStream.range(0, list.size()).forEach(i -> {
builder.append(list.get(i));
builder.append(",");
});
String join5 = builder.substring(0, builder.length() - 1);
//调用 .add() 方法时,会将新的元素追加到已有的字符串序列中,并自动添加指定的分隔符。
StringJoiner joiner = new StringJoiner(",","[","]");
for (String str : list) {
joiner.add(str);
}
String join6 = joiner.toString();
// deleteCharAt(int a),删除指定位置的字符
StringBuilder builder2 = new StringBuilder();
list.forEach(str -> builder2.append(str).append(","));
String join7 = builder2.deleteCharAt(builder2.length() - 1).toString();
// collectingAndThen(Collector<T,A,R> downstream,Function<R,RR> finisher)
// 第一个参数用于 reduce 操作,而第二参数用于 map操作。
// 也就是,先把流中的所有元素传递给第一个参数,然后把生成的集合传递给第二个参数来处理
String join8 = list.stream()
.collect(Collectors.collectingAndThen(Collectors.joining(","), str -> str ));
log.info("Join1: " + join1);
log.info("Join2: " + join2);
log.info("Join3: " + join3);
log.info("Join4: " + join4);
log.info("Join5: " + join5);
log.info("Join6: " + join6);
log.info("Join7: " + join7);
log.info("Join8: " + join8);
}
16:26:47.528 [main] INFO org.example.ListConvertsString -- Join1: 张三,李四,王五,赵六
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join2: 张三,李四,王五,赵六
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join3: 张三,李四,王五,赵六
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join4: [张三,李四,王五,赵六]
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join5: 张三,李四,王五,赵六
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join6: [张三,李四,王五,赵六]
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join7: 张三,李四,王五,赵六
16:26:47.529 [main] INFO org.example.ListConvertsString -- Join8: 张三,李四,王五,赵六