Java将List转换为String的几种常见方式
作者:zuihongyan518
将 List 转换为 String的几种方式
- 使用 List的toString()方法将 List 转换为 String;结果前后会带有英文的中括号[],如:[1, 2, 3, 4, 5]
- 使用Java8 stream流中的Collections.joining()方法,带有逗号分隔符或自定义分隔符将集合转成String字符串
- 使用String.join()方法将带有逗号分隔符或自定义分隔符的集合转换为字符串
- 使用Apache commons包下的StringUtils.join()方法;转成的String结尾带有分隔符小尾巴,如:"张三,李四,"
- 使用 StringBuilder、StringBuffer的append方法自定义join()方法
第一种:List.toString方法
List.toString()产生的结果会在开头和结尾添加英文中括号,每个字符串用逗号分隔符分隔(分隔符不可更变)。如果我们想去掉方括号的话,需要借助String.replaceAll方法。
/** * List的toString方法,结果前后会带有英文的中括号[],如:[1, 2, 3, 4, 5] */ public static void main(String[] args) { List<Integer> asList = Arrays.asList(1, 2, 3, 4, 5); String list2String = asList.toString(); System.out.println(list2String); //使用replaceAll方法替换 中括号 list2String = list2String.replaceAll("\\[|]", ""); System.out.println(list2String); }
第二种:Stream流转String
java8 stream中提供了Collectors.join()方法可用于将集合转成为具有指定分隔符、前缀和后缀的字符串。
public class Demo2 { /** * List 转 String * stream流中的Collections.joining方法 **/ public static void main(String[] args) { List<String> list = Arrays.asList("张三", "李四", "王武", null, "麻子"); //java stream流中的Collections.joining方法 //指定分隔符 String collect = list.stream().collect(Collectors.joining(",")); //没有分隔符,直接拼接 String collect1 = list.stream().collect(Collectors.joining()); //指定分隔符,前缀,后缀 String collect2 = list.stream().collect(Collectors.joining(",", "{", "}")); System.out.println(collect);//张三,李四,王武,null,麻子 System.out.println(collect1);//张三李四王武null麻子 System.out.println(collect2);//{张三,李四,王武,null,麻子} } }
第三种:String.join()方法
java8 String添加了一个特殊的Join方法,用于将集合转换为指定分隔符连接的字符串。
/** * String.join() **/ public static void main(String[] args) { List<String> list = Arrays.asList("张三", "李四", "王武", null, "麻子"); String join = String.join(",", list); System.out.println(join);//张三,李四,王武,null,麻子 }
第四种:StringUtils.join()方法
Apache commons包的外部库有一个方法StringUtils.join() 方法,它类似于 String.join() 方法,用于将集合转成指定分隔符链接的字符串;但是,如果集合中有null的话,会被转换成空串。
/** * StringUtils.join() **/ public static void main(String[] args) { List<String> list = Arrays.asList("张三", "李四", "王武", null, "麻子"); //StringUtils.join方法,集合中有null的话,会转成空串"" String join = StringUtils.join(list, ","); System.out.println(join); //张三,李四,王武,,麻子 }
第五种:自定义Join方法
java中提供了StringBuilder、StringBuffer两个类,可以使用他们提供的append方法自定义join方法,将集合转成字符串。
/** * StringBuilder、StringBuffer的append()方法 **/ public static void main(String[] args) { List<String> list = Arrays.asList("张三", "李四", "王武", null, "麻子"); //3. StringBuilder、StringBuffer的append方法自定义join方法 StringBuilder sb = new StringBuilder(); for (String s : list) { sb.append(s).append(","); } //sb.insert(0, "join如下:"); if (sb.length() > 1) { sb.deleteCharAt(sb.length() - 1); } System.out.println(sb.toString()); //张三,李四,王武,null,麻子 }
逻辑如上,上面逻辑可以封账成一个通用的join方法
public class Demo2 { public static class ListJoin<E> { public String join(String delimiter, Collection<? extends E> list) { Objects.requireNonNull(delimiter); Objects.requireNonNull(list); StringBuilder result = new StringBuilder(); for (E obj : list) { //根据需要对空进行处理 if (Objects.isNull(obj)) { continue; } result.append(obj).append(delimiter); } if (result.length() > 1) { result.deleteCharAt(result.length() - 1); } return result.toString(); } } /** * StringBuilder、StringBuffer的append()方法 **/ public static void main(String[] args) { List<String> list = Arrays.asList("张三", "李四", "王武", null, "麻子"); //上述join方法可以修改成通用的join方法 ListJoin<String> strDemo = new ListJoin<>(); String join = strDemo.join(",", list); System.out.println(join); //张三,李四,王武,麻子 ListJoin<Integer> intDemo = new ListJoin<>(); List<Integer> asList = Arrays.asList(1, 2, 3, 4, 5); String intJoin = intDemo.join("-", asList); System.out.println(intJoin); //1-2-3-4-5 } }
以上方式都可以将List集合转成字符串,具体根据业务需要使用不同方式。
附:List转String时注意事项
Object类是所有对象类的父类,而toString方法只能把那些可以转换为字符串的类型对象转换为字符串,否则转换后还是一个对象。
例如:
“woshizifuchuan”是一个String类型的对象,“woshizifuchuan”.toString();结果还是“woshizifuchuan”;
Org是一个组织的对象,如果Org.toString();结果是不正常的,因为Org对象中可能有多个属性,如组织名称,组织等,这个toString后无法知道具体的是那个属性转换为字符串,所以就不会正常显示。
备注:所有的java开发都是有一定原则的,不是说不报错就一切运行ok,要根据实际情况进行类型转换。
你先看一下Object类中的toString()方法源码:
public String toString() { return getClass().getName() +"@"+Integer.toHexString(hashCode()); //打印类的全命名+内存地址 }
假如你的类复写了Object类(此类为Java根基类)中的toString()方法;
例如:
public String toString(){ return "name:" + this.name+ ", pwd:"+this.pwd; //这里才是你要返回的值 如果没复写则调用Object类中的toString()方法,所以具体输出形式自己定 }
还可以在项目中引入fastjson.jar包,将对象转为字符串很简单的。
调用JSON.toJSONString(Org)转为json字符串。
总结
到此这篇关于Java将List转换为String的几种常见方式的文章就介绍到这了,更多相关Java将List转换为String内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!