在 java 中重复一个字符串 n 次的几种方法
原创
java
今天在 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。