集合或数组元素用分隔符拼接成字符串的四种方法

初始化集合
List<String> list = new ArrayList<>();
list.add("a");
list.add("b");
list.add("c");
初始化数组
String[] arr = {"a", "b", "c"};

方法一,常规遍历拼接

常规遍历集合或数组,然后截取掉最后的分隔符。
// 集合
StringBuilder sbList = new StringBuilder();
for (String s1 : list) {
    sbList.append(s1);
    sbList.append(",");
}
String joinList1 = sbList.toString().substring(0, sbList.length() - 1);//"a,b,c"

// 数组
StringBuilder sbArray = new StringBuilder();
for (String s1 : arr) {
    sbArray.append(s1);
    sbArray.append(",");
}
String joinArray1 = sbArray.toString().substring(0, sbArray.length() - 1);//"a,b,c"

方法二, String类的join方法。

可处理数组和集合。
集合或数组为null时,报NullPointerException异常。list为空集合时,返回结果为空字符串。
集合或数组中元素为null时,拼接null("null,null,null")。数组只声明,未赋值值时,默认值(null)拼接("null,null,null")。
集合或数组中元素为非String类型时,直接报参数类型错误。
分隔符delimiter为null时,报NullPointerException异常。
// 集合
String joinList2 = String.join(",", list);//"a,b,c"
// 数组
String joinArray2 = String.join(",", arr);//"a,b,c"

方法三, steram的收集中,Collectors的joining方法

可处理数组和集合。
分隔符delimiter为null时,直接无分隔符拼接(abc)。
集合或数组为null时,报NullPointerException异常。list为空集合时,返回结果为空字符串。
集合或数组中元素为null时,拼接null("null,null,null")。数组只声明,未赋值值时,默认值(null)拼接("null,null,null")。
集合或数组中元素为非String类型时,直接报参数类型错误。
分隔符delimiter为null时,报NullPointerException异常。
// 集合
String joinList3 = list.stream().collect(Collectors.joining(","));
// 数组
String joinArray3 = Arrays.stream(arr).collect(Collectors.joining(","));

// 非String类型,先转化为String类型
List<Integer> list2 = Arrays.asList(1, 2, 3);
String collect1 = list2.stream().map(String::valueOf).collect(Collectors.joining());//"123"
String collect2 =             
    list2.stream().map(String::valueOf).collect(Collectors.joining(","));//"1,2,3"
String collect3 = list2.stream().map(String::valueOf).collect(Collectors.joining(",",             
    "start-", "-end"));//"start-1,2,3-end"
        
// 对象类型集合
List<User> list3 = Arrays.asList(new User("mayun", 59),
                new User("mayun", 1),
                new User("leijun", 54));
Map<String, String> map = list3.stream().collect(
                Collectors.groupingBy(User::getUserName,
                        Collectors.mapping(e -> String.valueOf(e.getUserAge()),     
                            Collectors.joining(","))));//{mayun=59,1, leijun=54}

方法四,导入org.apache.commons.lang3包,lang3的StringUtils工具类的join方法。

可处理数组和集合。
集合或数组为null时,返回结果为null。list为空集合时,返回结果为空字符串。
集合或数组中元素为null时,拼接空字符串( , , )。数组只声明,未赋值值时,空字符串拼接( , , )。
集合中元素为非String类型时,正常拼接。数组中元素为非String类型时,separator连接字符必须为char类型。
分隔符delimiter为null时,直接无分隔符拼接(abc)。
// 集合
String joinList4 = StringUtils.join(list, ",");//"a,b,c"
// 数组
String joinArray4=StringUtils.join(arr, ",");//"a,b,c"

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值