Java 8中字符串拼接新姿势:StringJoiner

作者:CQITer小编 时间:2019-02-27 21:32

字号

在为什么阿里巴巴不建议在for循环中使用”+”进行字符串拼接一文中,我们介绍了几种Java中字符串拼接的方式,以及优缺点。其中还有一个重要的拼接方式我没有介绍,那就是Java 8中提供的StringJoiner ,本文就来介绍一下这个字符串拼接的新兵。

如果你想知道一共有多少种方法可以进行字符串拼接,教你一个简单的办法,在Intellij IDEA中,定义一个Java Bean,然后尝试使用快捷键自动生成一个toString方法,IDEA会提示多种toString生成策略可供选择。

Java 8中字符串拼接新姿势:StringJoiner

目前我使用的IDEA的toString生成策略默认的是使用JDK 1.8提供的StringJoiner。

1.介绍

StringJoiner是java.util包中的一个类,用于构造一个由分隔符分隔的字符序列(可选),并且可以从提供的前缀开始并以提供的后缀结尾。

虽然这也可以在StringBuilder类的帮助下在每个字符串之后附加分隔符,但StringJoiner提供了简单的方法来实现,而无需编写大量代码。

StringJoiner类共有2个构造函数,5个公有方法。其中最常用的方法就是add方法和toString方法,类似于StringBuilder中的append方法和toString方法。

2.用法

StringJoiner的用法比较简单,下面的代码中,我们使用StringJoiner进行了字符串拼接。

public class StringJoinerTest { 

 

    public static void main(String[] args) { 

        StringJoiner sj = new StringJoiner("Hollis"); 

 

        sj.add("hollischuang"); 

        sj.add("Java干货"); 

        System.out.println(sj.toString()); 

 

        StringJoiner sj1 = new StringJoiner(":","[","]"); 

 

        sj1.add("Hollis").add("hollischuang").add("Java干货"); 

        System.out.println(sj1.toString()); 

    } 

以上代码输出结果:

hollischuangHollisJava干货 

[Hollis:hollischuang:Java干货] 

值得注意的是,当我们使用StringJoiner(CharSequence delimiter)初始化一个StringJoiner的时候,这个delimiter其实是分隔符,并不是可变字符串的初始值。

StringJoiner(CharSequence delimiter,CharSequence prefix,CharSequence suffix)的第二个和第三个参数分别是拼接后的字符串的前缀和后缀。

3.原理

介绍了简单的用法之后,我们再来看看这个StringJoiner的原理,看看他到底是如何实现的。主要看一下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 ,没错,StringJoiner其实就是依赖StringBuilder实现的,在为什么阿里巴巴不建议在for循环中使用”+”进行字符串拼接中我们介绍过StringBuilder的实现原理,本文不在赘述。

当我们发现StringJoiner其实是通过StringBuilder实现之后,我们大概就可以猜到,StringJoiner性能损耗应该和直接使用StringBuilder差不多!

为什么需要StringJoiner

责任编辑:CQITer新闻报料:400-888-8888   本站原创,未经授权不得转载
关键词 >>Java 8 StringJoiner IDEA
继续阅读
热新闻
推荐
关于我们联系我们免责声明隐私政策 友情链接