java - 用指定字符填充指定长度的字符串的最有效方法?

标签 java performance gwt

基本上给定一个 int,我需要生成一个具有相同长度且仅包含指定字符的字符串。相关问题here ,但它与 C# 相关,并且字符串中的内容确实很重要。

这个question ,我对此的回答就是我问这个问题的原因。我不确定提高性能的最佳方法是什么。

示例

方法签名:

String getPattern(int length, char character);

用法:

//returns "zzzzzz"
getPattern(6, 'z');

我尝试过的

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

这是我在性能方面能做到的最好的吗?

最佳答案

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

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

关于java - 用指定字符填充指定长度的字符串的最有效方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7226623/

相关文章:

java - AnnotationException : @OneToOne or @ManyToOne on MySchema$Parent. propertyX 引用未知实体:MySchema$Child

c - pthread和printf的C性能差

java - 通过 servlet 访问 GWT POST 参数?

performance - 简单的 golang http rest 服务在负载下挂起

c# - 事件代码是否比 C# 中的虚拟/重写方法更适合缓存?

java - 正确使用 GWT RequestFactory ServiceLocator 和 DI

java - GWT FlexTable 按钮问题

java - 有没有办法在用 Java 创建文件时将文件发送到 AWS S3 存储桶?

java - Windows 中的 Netty 零复制

Java泛型成员初始化