使用指定字符填充指定长度的String的最有效方法?

Jay*_*com 0 java performance gwt

基本上给定一个int,我需要生成一个长度相同的String,只包含指定的字符.相关的问题在这里,但它涉及到C#和它事情有什么的字符串.

这个问题,以及我对它的回答是我问这个问题的原因.我不确定什么是表现明智的最佳方式.

方法签名:

String getPattern(int length, char character);
Run Code Online (Sandbox Code Playgroud)

用法:

//returns "zzzzzz"
getPattern(6, 'z');
Run Code Online (Sandbox Code Playgroud)

我试过的

String getPattern(int length, char character) {
    String result = "";
    for (int i = 0; i < length; i++) {
        result += character;
    }
    return result;
}
Run Code Online (Sandbox Code Playgroud)

这是我能表现得最好的吗?

Coo*_*ans 6

您应该使用StringBuilder而不是以这种方式连接字符.使用StringBuilder.append().

StringBuilder将为您提供更好的性能.连接方式的问题是每次创建一个新的String(字符串是不可变的),然后复制旧的字符串,附加新的字符串,并抛弃旧的String.这是一个额外的工作,在一段时间内(如在一个大的for循环中)会导致性能下降.

  • @Brian Roach - 大声笑.星期一早上我会给+1喝啤酒:P (2认同)

小智 5

StringUtils来自commons-lang或Strings番石榴是你的朋友.如前所述,避免使用 String连接.

StringUtils.repeat("a", 3) // => "aaa"
Strings.repeat("hey", 3) // => "heyheyhey"
Run Code Online (Sandbox Code Playgroud)