StringJoiner 使用

StringJoiner 基本使用

  1. StringBuffer 拼接

StringBuilder sb = new StringBuilder();

sb.append("hello");

sb.append(",");

sb.append("world");

sb.append(",");

sb.append("Java程序员");

String str = sb.toString(); //输出: hello,world,Java程序员

System.out.println("str :" + str);

可以看到这里需要拼接多次"," 。

2. StringJoiner 拼接

StringJoiner sj = new StringJoiner(",");

sj.add("hello");

sj.add("world");

sj.add("Java程序员");

String str = sj.toString(); //输出: hello,world,Java程序员

System.out.println("str :" + str);

可以看到这里不需要拼接多次"," 。

StringJoiner 介绍

  1. 类结构图

  1. 成员变量

private final String prefix; //拼接后的字符串前缀

private final String delimiter; //拼接时的字符串分隔符

private final String suffix; //拼接后的字符串后缀

private StringBuilder value; /* StringBuilder存储,拼接后的值。 */

private String emptyValue; //空值的情况,value为 null 时返回

  1. 构造方法

两个构造方法,一个必须带分隔符,

另一个必须带分隔符、前缀、后缀,其中 emptyValue 默认为前缀+后缀组成。

  1. 公开方法

  • setEmptyValue:设置空值
  • toString:转换成 String
  • add:添加字符串
  • merge:从另一个 StringJoiner 合并
  • length:长度(包括前缀后缀)
  1. 流式 API

add 方法源码

用 StringBuilder 进行封装的,首次创建会先拼接前缀,后续先添加分隔符,再添加字符串。

使用Demo

StringJoiner sj1 = new StringJoiner(",").add("hello").add("world").add("Java程序员");

System.out.println(sj1);

6.前后缀拼接

StringJoiner sj2 = new StringJoiner(",", "[", "]");

sj2.add("hello");

sj2.add("world");

sj2.add("Java程序员");

String str2 = sj2.toString();

7.空值处理

中间拼接null

// 如果add null,则会输出null,所以,如果add前需要判空

StringJoiner sj1 = new StringJoiner(",")

.add("hello")

.add(null)

.add("Java程序员");

System.out.println(sj1); //输出: hello,null,Java程序员

输出指定字符串

// 如果没有拼接的value,会输出emptyValue的值; 如果value有值 是不会输出emptyValue的值

StringJoiner sj0 = new StringJoiner(",", "[", "]");

sj0.setEmptyValue("没有值,设置默认空值!!!");

System.out.println(sj0.toString()); //输出: 没有值,设置默认空值!!!

 

StringJoiner sj1 = new StringJoiner(",")

.add("hello")

.add("Java程序员");

sj1.setEmptyValue("没有值,设置默认空值!!!");

System.out.println(sj1.toString()); //hello,Java程序员

String.join()

源码介绍

String针对 StringJoiner 又封装了一层的 API,可以传入动态参数或者迭代器。

使用示例

String sj1 = String.join(",", "hello", "Java程序员");

System.out.println(sj1); //输出: hello,Java程序员

 

List<String> strings = new LinkedList<>();

strings.add("Java");

strings.add("is");

strings.add("cool");

String message = String.join(" ", strings);

System.out.println(message); //输出: Java is cool

总结

开发人员可以根据需要选择合适的方式拼接。

 

参考: https://mp.weixin.qq.com/s/5Ehe_V_1sTy4QV7M-y-P0A

原文地址:https://www.cnblogs.com/coloz/p/14197241.html