在业务代码中,我们经常需要用逗号拼接多个字符串,但是,我看到很多代码还在使用下面这种方式拼接,一点都不拉风【特朗普式嘲讽.jpg】。
public static String dealWithStr(List<String> list){ StringBuffer buffer = new StringBuffer(); for(int i = 0 ; i < list.size() ; i++){ buffer.append(list.get(i)); if(i < list.size() - 1){ buffer.append(","); } } return buffer.toString(); }
其实,对于这种场景,有很优雅的处理方式,一行代码就足够了!
下面介绍三种方式,均是java8以后的新特性
static String join(CharSequence delimiter, CharSequence... elements) static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
我们来看看java 8 API的描述
static String join(CharSequence delimiter, CharSequence... elements)
static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
我来测试一下
public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("甄姬"); list.add("鲁班"); list.add("程咬金"); list.add("李白"); list.add("刘禅"); System.out.println(String.join(",", list));//甄姬,鲁班,程咬金,李白,刘禅 }
这个方法很简单,使用String类调用它的 静态方法join ,第一个参数传分隔符,第二个参数可以是数组,也可以是集合。返回值就是被处理过的字符串。
list.stream().collect(Collectors.joining(","))
public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("甄姬"); list.add("鲁班"); list.add("程咬金"); list.add("李白"); list.add("刘禅"); String dealWithStr = list.stream().collect(Collectors.joining(",")); System.out.println(dealWithStr);//甄姬,鲁班,程咬金,李白,刘禅 }
list.stream().reduce((a,b)->a + "," + b).get()
public static void main(String[] args) { List<String> list = new ArrayList<String>(); list.add("甄姬"); list.add("鲁班"); list.add("程咬金"); list.add("李白"); list.add("刘禅"); String dealWithStr = list.stream().reduce((a,b)->a + "," + b).get(); System.out.println(dealWithStr);//甄姬,鲁班,程咬金,李白,刘禅 }
第二种和第三种都使用到了stream流,之后有时间我会把java8的这个新特性好好和大家整理整理。
这三种方法还算拉风吧哈哈哈
Previous
【知识点】文件头部校验