java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > Java StringJoiner类

Java中的StringJoiner类使用示例深入详解

作者:修己xj

这篇文章主要为大家介绍了Java中的StringJoiner类使用示例深入详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

在Java编程中,字符串的拼接是一个常见的操作。Java提供了多种方法来实现字符串拼接,其中之一就是StringJoiner类。本文将详细介绍StringJoiner的用法和功能。

StringJoiner简介

StringJoiner是Java 8引入的一个用于拼接字符串的工具类。它允许我们以指定的分隔符将一组字符串连接成一个单独的字符串。我们可以在其源码中看到一个熟悉的身影StringBuilder,它是基于StringBuilder实现字符串操作的,所以它的性能和StringBuilder是差不多的,它也是非线程安全的。
以下是关于StringJoiner 构造方法和属性的源码:

package java.util;
public final class StringJoiner {
    private final String prefix;
    private final String delimiter;
    private final String suffix;
    private StringBuilder value;
    private String emptyValue;
    public StringJoiner(CharSequence delimiter) {
        this(delimiter, "", "");
    }
    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;
    }
}

字段说明:

构造函数详解:

这个构造函数接受一个CharSequence类型的参数delimiter,它表示拼接字符串时要使用的分隔符。前缀和后缀默认为空字符串。

这个构造函数接受三个CharSequence类型的参数,分别是分隔符delimiter、前缀prefix和后缀suffix。这个构造函数允许您自定义拼接结果的格式。在构造函数内部,会检查这些参数是否为null,并将它们转换为字符串形式保存在相应的字段中。同时,也会初始化emptyValue字段为前缀和后缀的组合。

add()方法

add()方法是StringJoiner类最重要的方法之一。add()方法用于将元素添加到StringJoiner对象中。这个方法用于将一个新元素(newElement)添加到StringJoiner对象中,并返回StringJoiner对象本身(支持链式调用)。源码如下:

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;
}

示例代码:

public static void main(String[] args) {
    StringJoiner stringJoiner = new StringJoiner(",","[","]");
    stringJoiner.add("x") .add("j");
    StringJoiner stringJoiner1 = new StringJoiner(",","(",")");
    stringJoiner1.add("x1").add("j1");
    System.out.println(stringJoiner.toString());
    System.out.println(stringJoiner1.toString());
    System.out.println(stringJoiner1.merge(stringJoiner).toString());
    System.out.println(stringJoiner1.toString());
    System.out.println(stringJoiner.merge(stringJoiner1).toString());
}

输出结果:

[x,j]
(x1,j1)
(x1,j1,x,j)
(x1,j1,x,j)
[x,j,x1,j1,x,j]

stream中的应用

有些家人们可能会说,如果我需要把集合 List<String> list 中的字符串使用,拼接的话可以直接借助stream实现

list.stream().collect(Collectors.joining(","));

我们可以看下Collectors.joining(",") 的源码就可以发现,他就是借助StringJoiner实现的,源码如下:

public static Collector<CharSequence, ?, String> joining(CharSequence delimiter) {
  return joining(delimiter, "", "");
}
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);
}

总结

以上就是Java中的StringJoiner类使用示例深入详解的详细内容,更多关于Java StringJoiner类的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:
阅读全文