首页 > 其他分享 >StringJoiner

StringJoiner

时间:2023-06-04 11:12:25浏览次数:40  
标签:StringBuilder delimiter values StringJoiner CharSequence new

StringJoiner是 Java 8 新增的一个 API,它基于 StringBuilder 实现,用于实现对字符串之间通过分隔符拼接的场景。StringJoiner 有两个构造方法,第一个构造要求依次传入分隔符、前缀和后缀。第二个构造则只要求传入分隔符即可(前缀和后缀默认为空字符串)。

StringJoiner(CharSequence delimiter, CharSequence prefix, CharSequence suffix)
StringJoiner(CharSequence delimiter)

有些字符串拼接场景,使用 StringBuffer 或 StringBuilder 则显得比较繁琐。

比如下面的例子:

List<Integer> values = Arrays.asList(1, 3, 5);
StringBuilder sb = new StringBuilder("(");

for (int i = 0; i < values.size(); i++) {
	sb.append(values.get(i));
	if (i != values.size() -1) {
		sb.append(",");
	}
}

sb.append(")");

而通过StringJoiner来实现拼接List的各个元素,代码看起来更加简洁。

List<Integer> values = Arrays.asList(1, 3, 5);
StringJoiner sj = new StringJoiner(",", "(", ")");

for (Integer value : values) {
	sj.add(value.toString());
}

另外,像平时经常使用的Collectors.joining(","),底层就是通过StringJoiner实现的。

源码如下:

public static Collector<CharSequence, ?, String> joining(
    CharSequence delimiter,CharSequence prefix,CharSequence suffix) {
    return new CollectorImpl<>(
            () -> new StringJoiner(delimiter, prefix, suffix),
            StringJoiner::add, StringJoiner::merge,
            StringJoiner::toString, CH_NOID);
}

标签:StringBuilder,delimiter,values,StringJoiner,CharSequence,new
From: https://www.cnblogs.com/YuXuanTM/p/17455353.html

相关文章

  • StringJoiner
         ......
  • JAVA中的两个容器StringBuilder和StringJoiner概述
    JAVA中的两个容器StringBuilder和StringJoiner概述StringBuilder可以看成一个容器,创建之后里面的内容是可以修改的方法名说明publicStringBuilderappend(任意类型)添加数据,并返回对象本身publicStringBuilderreverse()反转容器中的内容publicintlength()返......
  • StringJoiner类
    StringJoiner类是jdk8新增的一个类,但是目前被用到的不多。其底层使用的依然是StringBuilder看下面一个例子可以看出同样是拼接出[1,2,3]StringJoiner比StringBuilder渐......
  • Java:String、StringBuilder、StringJoiner学习笔记
    String创建的俩种方式1.直接赋值Stringstr="HelloWorld!";        当使用直接赋值的方式去创建字符串的时候,虚拟机会去串池里去检查字符串是否存在,如果......
  • String、StringBuffer 、StringBuilder、StringJoiner
    一、String、StringBuffer、StringBuilder1、定义用来连接多个字符的,本质就是一个char型的数组,是一种引用类型,并且不能被继承因为是final修饰的Stringstr="abc";相当......
  • 07 | JAVA的StringJoiner对象专门拼接字符串
    StringJoiner对象专门用来拼接字符串importjava.util.StringJoiner;publicclassMain{publicstaticvoidmain(String[]args){String[]names={......