摘要:使用 Java Collectors.joining方法把列表中的所有元素通过指定的分隔符连接字符串。
目录综述
在项目开发中,经常遇到的一个问题就是要把得到的一个集合转换成字符串,故在今天的分享中,我们将一起来学习如何把列表中的所有元素连接成由指定分隔符分隔的字符串。本文使用的列表List如下:
List<Integer> integerList = Stream.of(1, 2, 3, 6, 7, 9).collect(Collectors.toList());
这种定义List的方式采用的是Java 8 的Stream,所构建的list支持动态扩容。
使用For循环
基于for 循环拼接字符串是最常见的一个方法,示例如下:
/**
* 基于for 循环拼接字符串
*/
public static String forMethod(List<Integer> list, String separator) {
// 校验是否为空
if (list.isEmpty()) {
return "";
}
StringBuilder sb = new StringBuilder();
for (int i = 0, len = list.size(); i < len; i++) {
sb.append(list.get(i)).append(separator);
}
//去掉最后一个分隔符号
return sb.substring(0, sb.length() - 1);
}
StringUtils.join 函数
使用封装好的类StringUtils时,需要导入相关的包org.apache.commons.lang3.StringUtils
,它依赖 jar 包 commons-lang3。
public static String joinMethod(List<Integer> list, String separator) {
return StringUtils.join(list, separator);
}
其源码实现如下:
public static String join(Iterable<?> iterable, String separator) {
return iterable == null ? null : join(iterable.iterator(), separator);
}
第一个参数iterable表示实现了此接口的集合对象,集合Collection、List、Set都是Iterable的实现类;Iterable接口是Java集合框架的顶级接口,实现此接口使集合对象可以通过迭代器遍历自身元素。
第二个参数separator表示拼接集合元素的时候使用的分隔符,这样一来就省去很多中间转换的步骤,可以直接得到我们预期的字符串。
Collectors.joining(Function) 函数
Stream下的Collectors.joining(Function):用于将元素连接之后返回字符串,分隔符同样可以自定义。
public static String joiningMethod(List<Integer> list, String separator) {
return list.stream()
.map(String::valueOf)
.collect(Collectors.joining(separator));
}
Guava Joiner join 函数
使用 Google Guava 中的 com.google.common.base.Joiner 类拼接成字符串。
public static String guavaJoinMethod(List<Integer> list, String separator) {
return Joiner.on(separator).join(list);
}
返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。
String.join 函数
public static String stringJoinMethod(List<String> list, String separator) {
return String.join(separator, list);
}
该函数只适用于字符串List,返回一个字符串。该字符串是通过把 list 的元素连接起来,在两个元素之间插入 separator 字符串而生成的。
总的示例如下:
import org.apache.commons.lang3.StringUtils;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import com.google.common.base.Joiner;
public static void main(String[] args) {
String separator = "-";
List<Integer> list = initList();
String result = forMethod(list, separator);
System.out.println("----- forMethod -----" + result);
System.out.println("----- joinMethod -----" + joinMethod(list, separator));
System.out.println("----- streamMapMethod -----" + joiningMethod(list, separator));
System.out.println("----- guavaJoinMethod -----" + guavaJoinMethod(list, separator));
}
执行后,控制台打印结果如下:
----- forMethod -----1-2-3-6-7-9
----- joinMethod -----1-2-3-6-7-9
----- streamMapMethod -----1-2-3-6-7-9
----- guavaJoinMethod -----1-2-3-6-7-9
结束语
大家如果对于本文介绍的内容有不理解的地方,请在评论区留言。如果碰到【相关】问题也可以在评论区留言,和诸位互动交流。三人行必有我师,一起进步。大家可随意尽情享用本文啦!
标签:Java,String,join,list,列表,拼接,separator,字符串,----- From: https://www.cnblogs.com/east7/p/17320890.html