1、使用场景
我们经常在开发过程之中,会遇到需要把返回的Id list转换为一个使用逗号(,)分隔的字符串; 然后提供给后端执行SQL语句的In查询,或者给前端进行展示等等。
2、实现方法
在Java 8中将集合List转变为用逗号分隔的String是非常简单的。
使用String.join()函数,给函数传递一个分隔符合一个迭代器,一个StringJoiner对象会帮助我们完成所有的事情。
List<String> letters= Arrays.asList("A", "B", "C", "D");
String lettersCommaSeparated = String.join(",", letters);
System.out.println(lettersCommaSeparated );
我们采用流的方式来写,仍然能够得到同样的结果
String lettersCommaSeparated = letters.stream().collect(Collectors.joining(","));
System.out.println(lettersCommaSeparated );
Java 7 实现
private static final String SEPARATOR = ",";
public static void main(String[] args) {
List<String> letters = Arrays.asList("A","B","C","D");
StringBuilder strBuilder = new StringBuilder();
for(String letter : letters){
strBuilder.append(letter);
strBuilder.append(SEPARATOR);
}
String strLetter = strBuilder.toString();
System.out.println(strLetter);
//OUTPUT: A,B,C,D,
//Remove last comma
strLetter = strLetter.substring(0, strLetter.length() - SEPARATOR.length());
System.out.println(strLetter);
//OUTPUT: A,B,C,D
}
3、完整实战代码
public class StringList {
private static List<String> letters= Arrays.asList("A", "B", "C", "D");
private static final String SEPARATOR = ",";
/**
* 使用Java8进行返回
*/
public static void Java8ListToString() {
String lettersCommaSeparated = String.join(",", letters);
System.out.println("Java8ListToString: \n"+lettersCommaSeparated );
}
public static void Java8StreamListToString() {
String lettersCommaSeparated = letters.stream().collect(Collectors.joining(","));
System.out.println("Java8StreamListToString: \n"+lettersCommaSeparated );
}
public static void Java7ListToString() {
List<String> letters = Arrays.asList("A","B","C","D");
StringBuilder strBuilder = new StringBuilder();
for(String letter : letters){
strBuilder.append(letter);
strBuilder.append(SEPARATOR);
}
String strLetter = strBuilder.toString();
System.out.println(strLetter);
//OUTPUT: A,B,C,D,
//Remove last comma
strLetter = strLetter.substring(0, strLetter.length() - SEPARATOR.length());
System.out.println("Java7ListToString: \n"+strLetter);
//OUTPUT: A,B,C,D
}
public static void main(String[] args) {
Java8ListToString();
Java8StreamListToString();
Java7ListToString();
}
}