一. 说明
在StringBuilder中我们讲到,采用StringBuilder的拼接是十分迅速的,但是写的代码非常的多,那有既高效,有能实现更方便的拼接呢?那就是StringJoiner
- JDK8开始才有的
- 和StringBuilder一样,也是用来操作字符串的,也可以看成是一个容器,创建之后里面的内容是可变的
- 好处:不仅能提高字符串的操作效率,并且在有些场景下使用它操作字符串,代码会更简洁。
构造器 | 说明 |
---|---|
public StringJoiner(间隔符号) | 创建一个StringJoiner对象,指定拼接时的间隔符号 |
public StringJoiner(间隔符号, 开始符号, 结束符号) | 创建一个StringJoiner对象,指定拼接时的间隔符号,开始符号,结束符号 |
方法名称 | 说明 |
---|---|
public StringJoiner add (添加的内容) | 添加数据,并返回对象本身 |
public int length() | 返回长度(字符出现的个数) |
public String toString() | 返回一个字符串(该字符串就是拼接之后的结果) |
二. 创建对象
1. 使用无参构造器
import java.util.StringJoiner;
public class Main {
public static void main(String[] args) {
StringJoiner s = new StringJoiner(",");
s.add("java1");
s.add("java2");
s.add("java3");
System.out.println(s);
}
}
2. 使用有参构造器
import java.util.StringJoiner;
public class Main {
public static void main(String[] args) {
StringJoiner s = new StringJoiner(",","[","]");
s.add("java1");
s.add("java2");
s.add("java3");
System.out.println(s);
}
}
三. 案例
以StringBuilder中的案例为例:
public class Main {
public static void main(String[] args) {
System.out.println(getArrayData(new int[]{11, 22, 33}));
}
public static String getArrayData(int[] arr) {
// 1. 判断arr是否为null
if (arr == null) {
return null;
}
// 2. arr数组对象存在,arr = [11, 22, 33]
StringBuilder sb = new StringBuilder();
sb.append("[");
for (int i = 0; i < arr.length; i++) {
if (i == arr.length - 1) {
sb.append(arr[i]);
} else {
sb.append(arr[i]).append(",");
}
}
sb.append("]");
return sb.toString();
}
}
上面是使用StringBuilder所写的,接下来我们用StringJoiner来改写:
public class Main {
public static void main(String[] args) {
System.out.println(getArrayData(new int[]{11, 22, 33}));
}
public static String getArrayData(int[] arr) {
// 1. 判断arr是否为null
if (arr == null) {
return null;
}
// 2. arr数组对象存在,arr = [11, 22, 33]
StringJoiner s = new StringJoiner(",","[","]");
for (int i = 0; i < arr.length; i++) {
s.add(arr[i] + "");
}
return s.toString();
}
}
要注意,在s.add中添加的要是一个String类型的变量,所以我们在arr[i]后面加了一个""来让他变为一个String
是不是代码简单了很多呢?