今天在 js 库中看到一个重复字符串的方法:
export function repeat (character, count) {
return Array(count + 1).join(character)
}
功能即是把 character 字符串重复 count 次,我想使用 java 该怎么实现,记得 java 里应该有 join 方法的。
java 中大概有 4 种方法可以实现这个需求。
方法一:format
即使用 String.format 的占位符替换方式。
int count = 5;
String character = "daimafans";
String repeated = String.format("%0" + count + "d", 0).replace("0", character);
System.out.println(repeated);
// 结果
// daimafansdaimafansdaimafansdaimafansdaimafans
方法二:replace
其实和第一种是一样的,都是生成 n 位的 0 字符串,然后使用 String.replace 方法去替换。
int count = 5;
String character = "daimafans";
String repeated = new String(new char[count]).replace("\0", character);
方法三:Collections.nCopies
先使用 Collections.nCopies 接口把字符串拷贝到 count 大小的列表中,然后使用 String.join 拼接到一起。
int count = 5;
String character = "daimafans";
String repeated = String.join("", Collections.nCopies(count, character));
方法四:StringBuffer.append
这个方法应该是最容易想到的,把同一字符串循环拼接多次,简单粗暴好用。
StringBuffer buffer = new StringBuffer();
for (int i = 0; i < count; i++) {
buffer.append(character);
}
String repeated = buffer.toString();
性能对比
每种方式循环执行 1000000 次,耗时的毫秒数:
方法
耗时(毫秒)
一
1797
二
593
三
167
四
142
根据前面的总结和测试,相对而言,3 和 4 的耗时比较少,多次测试的结果 4 都比 3 用时更少一点。
注重性能就选择 3 或 4。