前言
经常遇到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+");
文章评论