item 63 hyowon - JAVA-JIKIMI/EFFECTIVE-JAVA3 GitHub Wiki

๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์€ ๋Š๋ฆฌ๋‹ˆ ์ฃผ์˜ํ•˜๋ผ

๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž + ๋ฅผ ์‚ฌ์šฉํ•จ์— ์žˆ์–ด์„œ ๋ฌธ์ž์—ด n๊ฐœ๋ฅผ ์ž‡๋Š” ์‹œ๊ฐ„์€ n^2 ์— ๋น„๋ก€ํ•œ๋‹ค.

๋ถˆ๋ณ€์ธ ๋‘ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•  ๊ฒฝ์šฐ ์–‘์ชฝ์˜ ๋‚ด์šฉ์„ ๋ชจ๋‘ ๋ณต์‚ฌํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

์ฝ”๋“œ 63-1. ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ์„ ์ž˜๋ชป ์‚ฌ์šฉํ•œ ์˜ˆ - ๋Š๋ฆฌ๋‹ค.

public String statement() {
	String result += "";
	for (int i = 0; i < numItems(); i++) {
		result += lineForItem(i); // ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ
	}
}

์ฝ”๋“œ 63-2. StringBuilder๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์„ฑ๋Šฅ ํ–ฅ์ƒ

public String statement2() {
	StringBuilder b = new StringBiulder(numItems() * LINE_WIDTH);
	// StringBuilder๋ฅผ ์ „์ฒด ๊ฒฐ๊ณผ๋ฅผ ๋‹ด๊ธฐ์— ์ถฉ๋ถ„ํ•œ ํฌ๊ธฐ๋กœ ์ดˆ๊ธฐํ™”
	for (int i = 0; i < numItems(); i++)
		b.append(lineForItem(i));
	return b.toString();
}

ํ’ˆ๋ชฉ์„ 100๊ฐœ๋กœ ํ•˜๊ณ  lineForItem์ด ๊ธธ์ด 80์ธ ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ•˜์—ฌ ์‹คํ–‰ํ•œ ๊ฒฐ๊ณผ ์ €์ž์˜ PC์—์„œ ์ฝ”๋“œ 1๊ณผ 2์˜ ์†๋„ ์ฐจ์ด๋Š” 6.5๋ฐฐ์ด๋‹ค.

๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž + ์˜ ์ˆ˜ํ–‰ ์‹œ๊ฐ„์€ n^2์— ๋น„๋ก€ํ•˜๋ฏ€๋กœ statement์™€ statement2์˜ ์„ฑ๋Šฅ ๊ฒฉ์ฐจ๋„ ์ ์  ๋ฒŒ์–ด์งˆ ๊ฒƒ์ด๋‹ค.

๊ฒฐ๋ก 

๋งŽ์€ ๋ฌธ์ž์—ด์„ ์—ฐ๊ฒฐํ•  ๋•Œ๋Š” ๋ฌธ์ž์—ด ์—ฐ๊ฒฐ ์—ฐ์‚ฐ์ž + ๋ฅผ ํ”ผํ•˜์ž.