Java 8中StringJoiner和StringBuilder之间的区别
StringJoiner和StringBuilder
在这里,我们将看到StringJoiner和StringBuilder之间的区别。
1)StringJoiner
StringJoiner是一个可在java.util包中使用的类。
StringJoiner是用于连接字符串的类。
StringJoiner类提供add(Stringstr)方法以同时基于构造函数中给定的定界符,前缀和后缀连接字符串。
StringJoiner是最后一个类,我们不能覆盖此类。
在StringJoiner构造函数中,我们可以传递三个参数,例如String分隔符,String前缀和String后缀。
语法:
StringJoiner object_name = new StringJoiner(delimeter,prefix,suffix);
问题:假设我们期望像“{“Java”;“C”;“C++”;“Ruby”}“这样的字符串,其中我们给出了一个包含”Java“,”C“,”C++“,“Ruby”
示例
import java.util.StringJoiner; public class StringJoinerClass { public static void main(String[] args) { //创建StringJoiner类的构造函数 StringJoiner strj = new StringJoiner(";", "{", "}"); //向StringJoiner添加一些元素以进行串联 //通过使用add(Stringstr)方法 strj.add("Java"); strj.add("C"); strj.add("C++"); strj.add("Ruby"); //通过StringJoiner类显示字符串的串联 System.out.println("The result after concatenation is :" + strj); } }
输出结果
The result after concatenation is :{Java;C;C++;Ruby}
我们将看到StringBuilder与StringJoiner类有何不同?
2)StringBuilder
StringBuilder是一个在java.lang包中可用的类。
StringBuilder也是提供连接字符串的工具的类。
StringBuilder类提供了append(Stringstr)方法来追加字符串。
在StringBuilder类构造函数中,我们不会传递诸如字符串定界符,字符串前缀,字符串后缀之类的参数。
StringBuilder不是最终类,因此我们无法覆盖此类。
语法:
StringBuilder strb = new StringBuilder();
问题:假设我们期望像“{“Java”;“Programming”}“这样的字符串,其中我们给出了一个包含”Java“,”Programming“的字符串数组。
我们将看到使用StringBuilder类解决该问题的方法是什么?
首先,我们将使用append(Stringstr)方法添加前缀“{”。
其次,我们将遍历字符串数组{“Java”,“Programming”},并在每个元素后附加定界符。
最后,我们将添加后缀“}”。
示例
import java.lang.StringBuilder; class StringBuilderClass { public static void main(String[] args) { //创建StringBuilder的构造函数 //没有传递参数的类 StringBuilder strb = new StringBuilder(); //向StringJoiner添加一些元素以进行串联 //通过使用add(Stringstr)方法 //首先,如果需要,我们将添加前缀 strb.append("{"); //其次,我们将在每个元素后附加所需的分隔符 strb.append("Java"); strb.append(";").append("C"); strb.append(";").append("C++"); //最后,如果需要,我们将添加后缀 strb.append("}"); //通过StringBuilder类显示字符串的串联 System.out.println("The result after concatenation is :" + strb); } }
输出结果
E:\Programs>javac StringBuilderClass.java E:\Programs>java StringBuilderClass The result after concatenation is :{Java;C;C++}