item 63 dodo4513 - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki
- ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์๋ก ๋ฌธ์์ด n๊ฐ๋ฅผ ์๋ ์๊ฐ์ n2์ ๋น๋กํ๋ค.
๋ฌธ์์ด์ ๋ถ๋ณ(์์ดํ 17)์ด๋ผ์ ๋ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ ๊ฒฝ์ฐ ์์ชฝ์ ๋ด์ฉ์ ๋ชจ๋ ๋ณต์ฌํด์ผ ํ๋ฏ๋ก ์ฑ๋ฅ ์ ํ๋ ํผํ ์ ์๋ ๊ฒฐ๊ณผ๋ค.
public String statement() {
String result = "";
for (int i = 0; i < numItems(); i++)
result += lineForItem(i); // ๋ฌธ์์ด ์ฐ๊ฒฐ
return result;
}
- ํ๋ชฉ์ด ๋ง์ ๊ฒฝ์ฐ ์ด ๋ฉ์๋๋ ์ฌ๊ฐํ๊ฒ ๋๋ ค์ง ์ ์๋ค. ์ฑ๋ฅ์ ํฌ๊ธฐํ๊ณ ์ถ์ง ์๋ค๋ฉด String ๋์ StringBuilder๋ฅผ ์ฌ์ฉํ์
public String statement2() {
StringBuilder b = new StringBuilder(numItems() * LINE_WIDTH);
for (int i = 0; i < numItems(); i++)
b.append(lineForItem(i));
return b.toString();
}
- ์๋ฐ 6 ์ดํ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฑ๋ฅ์ ๋ค๋ฐฉ๋ฉด์ผ๋ก ๊ฐ์ ํ์ง๋ง, ์ด ๋ ๋ฉ์๋์ ์ฑ๋ฅ ์ฐจ์ด๋ ์ฌ์ ํ ํฌ๋ค.
- statement ๋ฉ์๋์ ์ํ ์๊ฐ์ ํ๋ชฉ ์์ ์ ๊ณฑ์ด ๋น๋กํด ๋์ด๋๊ณ statement2๋ ์ ํ์ผ๋ก ๋์ด๋๋ฏ๋ก, ํ๋ชฉ ์๊ฐ ๋์ด๋ ์๋ก ์ฑ๋ฅ ๊ฒฉ์ฐจ๋ ์ ์ ๋ฒ์ด์ง ๊ฒ์ด๋ค.
- statement2์์ StringBuilder๋ฅผ ์ ์ฒด ๊ฒฐ๊ณผ๋ฅผ ๋ด๊ธฐ์ ์ถฉ๋ถํ ํฌ๊ธฐ๋ก ์ด๊ธฐํํ ์ ์ ์์ง ๋ง์.
์์น์ ๊ฐ๋จํ๋ค.
์ฑ๋ฅ์ ์ ๊ฒฝ ์จ์ผ ํ๋ค๋ฉด ๋ง์ ๋ฌธ์์ด์ ์ฐ๊ฒฐํ ๋๋ ๋ฌธ์์ด ์ฐ๊ฒฐ ์ฐ์ฐ์(+)๋ฅผ ํผํ์.
๋์ StringBuilder์ append ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ผ