Item 63. String Concat

๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์€ ๋А๋ฆฌ๋‹ˆ ์ฃผ์˜ํ•ด์„œ ์‚ฌ์šฉํ•˜๋ผ

+์„ ์‚ฌ์šฉํ•˜์—ฌ ํŽธ๋ฆฌํ•˜๊ฒŒ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์„ ํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ์—ฐ์‚ฐ ์ž์ฒด๊ฐ€ ํฐ ์„ฑ๋Šฅ ์ €ํ•˜๋ฅผ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋‹ค. ๋ฌธ์ž์—ด์€ ๋ถˆ๋ณ€ ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‘ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•  ๊ฒฝ์šฐ ๋‘ ๋ฌธ์ž์—ด์„ ๋ณต์‚ฌํ•œ ํ›„ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์„ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— n๊ฐœ์˜ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•  ๊ฒฝ์šฐ n^2์˜ ์‹œ๊ฐ„์ด ๊ฑธ๋ฆฐ๋‹ค.

StringBuilder ์‚ฌ์šฉ

์œ„์™€ ๊ฐ™์€ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด StringBuilder๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

class Example {
    public String statementWithString() {
        String result = "";
        for (int i = 0; i < numItems(); i++) {
            result += lineForItem(i);
        }
        return result;
    }
    
    public String statementWithStringBuilder() {
        StringBuilder sb = new StringBuilder(numItems() * LINE_WIDTH); // ์ ์ ˆํ•œ ํฌ๊ธฐ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๋ฉด ๋” ๋น ๋ฅด๋‹ค
        for (int i = 0; i < numItems(); i++) {
            sb.append(lineForItem(i));
        }
        return sb.toString();
    }
}

์‚ฌ์šฉํ•˜๋”๋ผ๋„ ํฌ๊ฒŒ ๋ฌธ์ œ๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ

์œ„ ์„ค๋ช…๊ณผ ๊ฐ™์•„ ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉํ•˜๋ฉด ์„ฑ๋Šฅ ์ €ํ•˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€๋งŒ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๋Š” ์‚ฌ์šฉํ•˜๋”๋ผ๋„ ํฐ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค.

  • ํ•œ ์ค„์งœ๋ฆฌ ์ถœ๋ ฅ๊ฐ’

  • ์ž‘๊ณ ํฌ๊ธฐ๊ฐ€ ๊ณ ์ •๋œ ๊ฐ์ฒด์˜ ๋ฌธ์ž์—ด ํ‘œํ˜„

Last updated

Was this helpful?