本文的主要内容是:介绍2类共5种将一个List拼接为一个String的方法并添加连接符,不使用第三方插件,仅使用JDK原生API
内容导览
朴素
- 遍历每个元素,拼接上连接符;结束后再去除掉最后一个连接符
- 遍历每个元素,拼接上连接符;结束后再去除掉最后一个连接符
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
/**
* 字符串拼接:朴素算法
*/
public class StringJoinUtils {
private List<String> dataList;
/**
* 遍历每个元素,拼接上连接符;结束后再去除掉最后一个连接符
*/
@Test
public void plain01() {
StringBuilder sb = new StringBuilder();
for (String ele : dataList) {
sb.append(ele).append(",");
}
String result = sb.subSequence(0, sb.length()-1).toString(); //去除几个,length就减几
System.out.println(result);
}
/**
* 遍历每个元素,只有符合不是最后一个元素的条件,才拼接连接符
*/
@Test
public void plain02() {
StringBuilder sb = new StringBuilder();
for (int i = 0, len = dataList.size(); i < len; i++) {
sb.append(dataList.get(i));
if(i != len-1) {
sb.append(",");
}
}
System.out.println(sb.toString());
}
@BeforeEach
public void init() {
dataList = new ArrayList<>();
dataList.add("Aa");
dataList.add("Bb");
dataList.add("Cc");
}
}
JDK API
- String.join方法
- stream.collect(Collectors.joining(","))
- StringJoiner工具类
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
import java.util.StringJoiner;
/**
* 字符串拼接
*/
public class StringJoinUtils {
private List<String> dataList;
/**
* 调用JDK的API
*/
@Test
public void jdkApi() {
String result = String.join(",", dataList);
System.out.println(result);
}
/**
* 使用Stream的方式连接
*/
@Test
public void stream() {
List<String> dataList = new ArrayList<>();
dataList.add("Aa");
dataList.add("Bb");
dataList.add("Cc");
String result = dataList.stream().collect(Collectors.joining(","));
System.out.println(result);
}
/**
* 使用JDK内置的工具类
*/
@Test
public void joinUtil() {
StringJoiner sj = new StringJoiner(",");
for (String ele : dataList) {
sj.add(ele);
}
System.out.println(sj.toString());
}
@BeforeEach
public void init() {
dataList = new ArrayList<>();
dataList.add("Aa");
dataList.add("Bb");
dataList.add("Cc");
}
}
Name:
Email:
Link: