面试题答案
一键面试- 使用StringJoiner:
StringJoiner
主要用于以分隔符拼接字符串,在长字符串拼接场景下,如果有分隔符需求,它能提升代码可读性和一定性能。- 示例代码:
import java.util.StringJoiner; public class StringJoinerExample { public static void main(String[] args) { StringJoiner sj = new StringJoiner(", "); sj.add("apple"); sj.add("banana"); sj.add("cherry"); String result = sj.toString(); System.out.println(result); } }
- 使用
join
方法:String
类的join
方法是静态方法,适用于拼接数组或集合中的字符串元素。- 示例代码:
import java.util.Arrays; public class StringJoinExample { public static void main(String[] args) { String[] words = {"apple", "banana", "cherry"}; String result = String.join(", ", words); System.out.println(result); } }
- 考虑使用
CharArrayWriter
和BufferedWriter
:- 对于非常长的字符串拼接,将字符写入
CharArrayWriter
,然后一次性转换为字符串,利用其缓冲区提升性能。 - 示例代码:
import java.io.BufferedWriter; import java.io.CharArrayWriter; import java.io.IOException; import java.io.Writer; public class CharArrayWriterExample { public static void main(String[] args) { try (CharArrayWriter caw = new CharArrayWriter(); Writer writer = new BufferedWriter(caw)) { writer.write("apple"); writer.write(", "); writer.write("banana"); writer.write(", "); writer.write("cherry"); String result = caw.toString(); System.out.println(result); } catch (IOException e) { e.printStackTrace(); } } }
- 对于非常长的字符串拼接,将字符写入
这些方法在不同场景下各有优势,StringJoiner
适用于有分隔符需求且逐个添加元素的场景,String.join
适用于拼接数组或集合元素,CharArrayWriter
和BufferedWriter
适用于非常长字符串的复杂拼接场景。但在大多数常规长字符串拼接场景下,StringBuilder
依然是性能和通用性的良好选择。