字符串拼接还在用String、StringBuilder?试试StringJoiner吧

StringJoiner是Java 8引入的新类,用于方便地拼接字符串,自动处理分隔符、前缀和后缀。在处理数组元素拼接成逗号分隔的字符串时,它能避免手动添加分隔符和处理边界问题。通过调用add方法,可以直接添加字符串,简化了代码。此外,StringJoiner提供了带前缀和后缀的构造方法,使得在结果字符串前后添加定制内容变得简单。
摘要由CSDN通过智能技术生成

StringJoiner是JDK1.8新出的一个类,用于拼接字符串时加入分隔符、前缀、后缀。不需要手动拼接这些与业务无关的符号,也省去处理边界问题的麻烦。

使用说明

例子:将数组中的元素拼接成以","分割的字符串

String[] strings = new String[]{"a", "b", "c"};

拼接结果:a,b,c

使用StringJoiner之前

    public static void main(String[] args) {
        String[] strings = new String[]{"a", "b", "c"};

        StringBuilder sb = new StringBuilder();
        for (String s : strings) {
            // 需要在每一次拼接后面加","
            sb.append(s).append(",");
        }
        // 拼接完后还需要将最后一个分隔符","去掉
        String substring = sb.substring(0, sb.length() - 1);

        System.out.println(substring);
    }

使用StringJoiner之后

    public static void main(String[] args) {
        String[] strings = new String[]{"a", "b", "c"};

        // 构造方法参数是分隔符","每次拼接字符串自动加上分隔符
        StringJoiner sj = new StringJoiner(",");
        for (String s : strings) {
            // 直接拼接字符串,无需处理分隔符和边界问题
            sj.add(s);
        }

        System.out.println(sj);
    }

StringJoiner介绍

StringJoiner有两个构造方法:

一个参数的构造方法,构造一个以delimiter为分隔符的StringJoiner,每次拼接字符串自动加上delimiter分隔符

    public StringJoiner(CharSequence delimiter) {
        this(delimiter, "", "");
    }

三个参数的构造方法,构造一个以delimiter为分隔符的StringJoiner,并且在最终的结果字符串上拼接prefix前缀和suffix后缀。

    public StringJoiner(CharSequence delimiter,
                        CharSequence prefix,
                        CharSequence suffix) {
        Objects.requireNonNull(prefix, "The prefix must not be null");
        Objects.requireNonNull(delimiter, "The delimiter must not be null");
        Objects.requireNonNull(suffix, "The suffix must not be null");
        // make defensive copies of arguments
        this.prefix = prefix.toString();
        this.delimiter = delimiter.toString();
        this.suffix = suffix.toString();
        this.emptyValue = this.prefix + this.suffix;
    }

add方法

    public StringJoiner add(CharSequence newElement) {
        prepareBuilder().append(newElement);
        return this;
    }
    private StringBuilder prepareBuilder() {
        if (value != null) {
            value.append(delimiter);
        } else {
            value = new StringBuilder().append(prefix);
        }
        return value;
    }

最终是调用的StringBuilder的append方法

    public StringBuilder append(CharSequence s) {
        super.append(s);
        return this;
    }

 

  • 11
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值