在 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。

如果觉得这对你有用,请随意赞赏,给与作者支持
评论 0
最新评论