码迷,mamicode.com
首页 > 其他好文 > 详细

第51条:当心字符串连接的性能

时间:2016-08-17 01:22:40      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

字符串连接操作符(“+”)是把多个字符串合并为一个字符串的便利途径。要想产生单独一行的输出,或者构造一个字符串来表示一个较小的、大小固定的对象,使用连接操作符是合适的。但对于为连接n个字符串而重复地使用字符串连接操作符,需要n的平方级的时间,这是由于字符串不可变,当两个字符串被连接在一起,它们的内容都要被拷贝。

 

public String statement() {
    String result = "";
    for(int i=0; i < numItems(); i++)
           result += lineForItem(i);
    return result;
}

如果numItems的数量很多,执行的时间会很长,为了获得可接受的性能,使用StringBuilder代替String

public String statement() {
    StringBuilder b = new StringBuilder(numItems() * LINE_WIDTH);
    for(int i=0; i < numItems(); i++)
        b.append(lineForItem(i));
    return b.toString();
}

StringBuilder内部维护一个字符数组,操作都是在字符数组上进行,append方法的时间是线性的。

第51条:当心字符串连接的性能

标签:

原文地址:http://www.cnblogs.com/13jhzeng/p/5778302.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!