2021.5.2:StringJoiner
StringJoiner
要高效拼接字符串,应该使用StringBuilder,替代的是+连接运算符。
很多时候,我们进行字符串拼接时,是用特定字符将某String数组中的所有String连接起来。Java标准库提供了StringJoiner来做这样的事情——用特定分隔符拼接字符数组。
用法
例子
package pack1; import java.util.StringJoiner; public class Main { public static void main(String[] args) { String[] names = {"Bob", "Alice", "Grade"}; var sj = new StringJoiner(", "); for (String name : names) { sj.add(name); } System.out.println(sj.toString()); } }
以上例子中,只是单纯指定了分隔符,如果还想为连接后的String加开头和结尾,可以在初始化StringJoiner实例时指定最后String的开头和结尾:
var sj = new StringJoiner(", ","Hello ","!");
由此可见StringJoiner的用法和StringBuilder的用法是类似的,区别在于StringBuilder是直接连接,StringJoiner是用分隔符连接,且可以加开头和结尾。
使用时,都是用for循环对一个String [] 数组中的所有String调用这些类的相关方法。StringBuilder是append(str)、insert(i,str),StringJoiner是add(str)
String.join()
不过使用StringJoiner毕竟不是长久之计,String还提供了一个静态方法join(),这个方法在内部使用了StringJoiner来拼接字符串,用起来更方便,且在实际使用中,用该方法基本可以实现所有跟拼接相关的内容(比如StringBuilder与StringJoiner),用法:
String.join("",str);//直接连接,相当于+和StringBuilder的作用 String.join(",",str);//指定分隔符,相当于StringJoiner的作用
注意第一项参数必须是String而不能是char。
小结
用指定分隔符拼接字符串数组时,使用StringJoiner和String.join()更方便;
用StringJoiner拼接字符串时,还可以额外添加一个“开头”、“结尾”。
总结
用String.join()可以实现字符串的连接和用特定字符的拼接:
String.join("",str);//直接连接,相当于+和StringBuilder的作用 String.join(",",str);//指定分隔符,相当于StringJoiner的作用