将List转变为逗号分隔的字符串
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: "+lettersCommaSeparated ); } public static void Java8StreamListToString() { String lettersCommaSeparated = letters.stream().collect(Collectors.joining(",")); System.out.println("Java8StreamListToString: "+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: "+strLetter); //OUTPUT: A,B,C,D } public static void main(String[] args) { Java8ListToString(); Java8StreamListToString(); Java7ListToString(); } }