String.join()和StringUtils.join()优雅解决数组或者集合拼接

目录

StringUtils.join() 实现

pom依赖

api说明

代码实现

String.join() 实现

pom依赖

api说明

代码实现

两种实现方式对比


你也许遇到过将数组或集合以某“,”、“-”、“.”等拼接字符拼接成新的字符串的需求,拼接后的字符串将会是这样  a,b,c 或者 a-b-c 或者 a.b.c 等。

你可能会想遍历拼接,去除掉最后一个拼接字符。

public static void main(String[] args) {
    List<String> list = new ArrayList<>(Arrays.asList(new String[]{"a", "b", "c"}));
    StringBuilder stringBuilder = new StringBuilder();
    for (String s : list) {
        stringBuilder.append(s + ",");
    }
    System.out.println(stringBuilder.substring(0, stringBuilder.length() - 1));
}

或者会想着先遍历,数组的最后一个元素单独处理。

public static void main(String[] args) {
    List<String> list = new ArrayList<>(Arrays.asList(new String[]{"a", "b", "c"}));
    StringBuilder stringBuilder = new StringBuilder();
    for (int i = 0; i < list.size() -1 ;i ++) {
        stringBuilder.append(list.get(i) + ",");
    }
    System.out.println(stringBuilder.append(list.get(list.size() - 1)).toString());
}

以上两种方法要么处理最后一个拼接的特殊字符、要么需要对最后一个字符单独处理,都不是特别优雅,那咱这块有没有优雅的实现方式呢。别说,还真有两种实现方式。

StringUtils.join() 实现

pom依赖

<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-lang3</artifactId>
    <version>3.11</version>
</dependency>

api说明

代码实现

public static void main(String[] args) {
    List<String> list = new ArrayList<>(Arrays.asList(new String[]{"a", "b", "c"}));
    System.out.println(StringUtils.join(list, ","));
}

String.join() 实现

pom依赖

String.join() 是 JDK8 新增方法,不需要引入外部依赖。

api说明

代码实现

public static void main(String[] args) {
    List<String> list = new ArrayList<>(Arrays.asList(new String[]{"a", "b", "c"}));
    System.out.println(String.join(",", list));
}

StringUtils.join 和 String.join() 两者都是一行代码就搞定了,是不是很优雅呢?

两种实现方式对比

参数顺序:StringUtils.join() 第一个参数是数组或者集合,第二个参数是拼接字符;String.join() 第一个参数是拼接字符,第二个参数数组或者集合。

参数范围:StringUtils.join() 可以传入 Integer 或者其他类型的集合或数组; String.join() 尽可以传入实现 charSequence 接口类型的集合或数组。

对比总结:如果是字符串类型的集合或数组建议使用 String.join(),其他类型建议使用 StringUtils.join()。

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值