前言
经常遇到List、ArrayList需要拼接成用逗号或者空格隔开的文本,或者类似的文本转成List,最基本的方法是迭代List里的每一项,然后加到这个String上去,但是最后有一个符号,需要特别处理下,虽然并不是很难,但是稍微有点繁琐,且不优雅,例如:
StringBuilder string = new StringBuilder();
for (String name : names) {
string.append(name).append(",");
}
string = new StringBuilder(string.substring(0, string.length() - 1));
System.out.println(string);
优雅实现拼接
一行代码就就可以咯
// 如果换成是List、ArrayList也是可以的
String[] names = new String[]{"Jame", "Terry", "Tom"};
String strings = String.join(",", names); //第一个参数是分隔符,第二个参数是List或者数组
System.out.println(strings);
如果不是简单的ArrayList<String>,而是Object,可以使用Stream的map reduce功能:
//存的是假设是一个Object,用户的ID和姓名,要输出姓名的string
List<String[]> users = new ArrayList<>();
users.add(new String[]{"1", "James"});
users.add(new String[]{"2", "Terry"});
users.add(new String[]{"3", "Tom"});
String strings = users.stream().map(item -> item[1]).collect(Collectors.joining(","));
System.out.println(strings);
如果你使用的低版本的Java,还可以使用 Apache Commons library
// 如果换成是List、ArrayList也是可以的
String[] names = new String[]{"Jame", "Terry", "Tom"};
//第一个参数是List或者数组,第二个参数是分隔符
String string2 = org.apache.commons.lang3.StringUtils.StringUtils.join(names, ",");
System.out.println(string2);
如果你使用了Spring,Spring里也有工具方法可以使用:
import org.springframework.util.StringUtils;
//测试数组
String[] names = new String[]{"Jame", "Terry", "Tom"};
StringUtils.arrayToCommaDelimitedString(names);//这个直接用逗号隔开
String strings = StringUtils.arrayToDelimitedString(names, ",");//这个方法可以指定分隔符
System.out.println(strings);
//测试Array
List<String> names2 = new ArrayList<>();
names2.add("1");
names2.add("2");
System.out.println(StringUtils.arrayToDelimitedString(names2.toArray(), ","));
如果是Android上开发,还可以使用:
TextUtils.join()
实现解析String转成Array
String strings = "James,Terry,Tom";
//转成数组
String[] names = strings.split(",");
//转成Array
List<String> namesArray = Arrays.asList(names.clone());
//Array也可以方便的转成数组
String[] otherNames = namesArray.toArray(new String[]{});
//测试如果中间隔开的实空格(可能有多个空格,或者\t这类)
String strings2 = "James Terry Tom";
// 利用正则表达式来解析
String[] names2 = strings2.split("\\s+");
文章评论