【Java】StringJoiner

一、引入

在之前我们拼接 1000000 个字符串的时候,用的是字符串直接拼接的方式。这种拼接的方式速度太慢了,因此我们使用 StringBuilder 进行替代,提高了代码的运行速度。

image-20240408155235714

但是 StringBuilder 书写的代码还是比较麻烦的,例如当我们想要将数组拼接成指定字符串的时候就有点慢了。

在循环的开始去拼接左括号,在循环的结束去拼接右括号。在循环的过程中,对中间的 , (逗号和空格)还需要做判断

image-20240408155449146

但如果我们想偷个懒,这是程序员的品格,正是因为有这样的品格,程序员才会创造很多很多一劳永逸的方法去解决问题。

那有没有一种拼接速度快,代码又简单的方式呢?这正是我们现在要学习的 StringJoiner

我们现在先来体验一下 StringJoiner。在创建对象的时候我们可以指定中间的间隔符号,用逗号分隔,可以指定开始的符号:左括号,还可以指定结束的符号:右括号,一旦指定完后,在添加元素的时候我们就不需要进行判断了。我们在下面代码遍历到的每一个数组里的元素,直接将它扔给 StringJoiner 就行了。

代码非常简单,最终打印的就是我们想要的效果,所以 StringJoiner,用起来真的是非常方便

image-20240408160254884


二、StringJoiner 概述

  • StringJoiner跟StringBuilder一样,也可以看成是一个容器,创建之后里面的内容是可变的。

  • 作用:提高字符串的操作效率,而且代码编写特别简洁,但是目前市场上很少有人用。

    因为它是从JDK8才出现的。他们之前一直在用 StringBuider 用熟了就懒得改了。


三、构造方法

它的构造方法是没有空参的,它有两个带参的构造需要我们掌握。

方法名说明
public StringJoiner(间隔符号)创建一个 StringJoiner 对象,指定拼接时的间隔符号
public StringJoiner(间隔符号, 开始符号, 结束符号)创建一个 StringJoiner 对象,指定拼接时的间隔符号、开始符号、结束符号

image-20240408160724430


四、成员方法

PS:add 目前为止只能添加字符串。

方法名说明
public StringJoiner add(添加的字符串)添加数据,并返回对象本身,因此这里可以使用链式编程
public int length()返回长度(字符出现的个数)
public String toString()返回一个字符串(改字符串就是拼接之后的结果)

五、代码示例

public StringJoiner(间隔符号)

package com.itheima.stringjoinerdemo;

import java.util.StringJoiner;

public class StringJoinerDemo1 {
    public static void main(String[] args) {
        //1.创建一个对象,并指定中间的间隔符号
        StringJoiner sj = new StringJoiner("---");
        
        //2.添加元素
        sj.add("aaa").add("bbb").add("ccc");

        //3.打印结果
        System.out.println(sj);//aaa---bbb---ccc
    }
}

public StringJoiner(间隔符号, 开始符号, 结束符号),可以通过快捷键 ctrl + p 查看所对应的参数。

delimiter:间隔符号。

prefix:开始符号。

suffix:结束符号。

image-20240408162526748

或者你先随便写,然后打印运行拼接后的结果,可以就可以区分出来参数的顺序了。

package com.itheima.stringjoinerdemo;

import java.util.StringJoiner;

public class StringJoinerDemo2 {
    public static void main(String[] args) {
        //1.创建对象
        StringJoiner sj = new StringJoiner(", ","[","]");

        //2.添加元素
        sj.add("aaa").add("bbb").add("ccc");

        int len = sj.length();
        System.out.println(len);//15,PS:sj.length() 求的是字符的个数,除了我们添加的内容以外,还有上面的间隔符号、开始标记、结束标记也是需要算进来的。

        //3.打印
        System.out.println(sj);//[aaa, bbb, ccc]

        String str = sj.toString();
        System.out.println(str);//[aaa, bbb, ccc]
    }
}

六、总结

1、String:表示字符串的类,定义了很多操作字符串的方法

2、StringBuilder:一个可变的操作字符串的容器。它可以帮助我们快速的去操作字符串。

我们一般会用它的两个功能:拼接字符串、将容器里面的内容进行反转

3、StringJoiner:JDK8出现的一个可变的操作字符串的容器,可以高效,方便的拼接字符串

所以在以后,你在拼接字符串的时候,如果你要指定开始标记、结束标记、中间的间隔符号,此时你可以使用 StringBuilder。但是 StringBuilder 代码写起来有点麻烦,此时就可以使用 StringJoiner

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值