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


    字符串连接操作符(“+”)是把多个字符串合并为一个字符串的便利途径。要想产生单独一行的输出,或者构造一个字符串来表示一个较小的、大小固定的对象,使用连接操作符是合适的。但对于为连接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方法的时间是线性的。

  • 相关阅读:
    60、剑指offer--把二叉树打印成多行
    59、剑指offer--按之字形顺序打印二叉树
    KNN(最近邻算法)
    RBM(受限玻尔兹曼机)
    Denoising Autoencod
    决策树算法
    AdaBoost算法简介
    suricata工作流程简介
    KD tree详解
    tesseract训练新字库
  • 原文地址:https://www.cnblogs.com/13jhzeng/p/5778302.html
Copyright © 2020-2023  润新知