๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๋นˆ ๊ตฌ๋ฉ ์ฑ„์šฐ๊ธฐ

[Java] ArrayList์™€ LinkedList์˜ ์š”์†Œ ์ˆœํšŒ ์‹œ ์„ฑ๋Šฅ ์ฐจ์ด

์ถœ์‹œ

ChatGPT


1. ArrayList

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

ArrayList๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ ๋™์  ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค. ์ด ๋ฐฐ์—ด์€ ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์— ์š”์†Œ๋ฅผ ์ €์žฅํ•œ๋‹ค.

์š”์†Œ ์ˆœํšŒ

  • ์„ฑ๋Šฅ: ์š”์†Œ๋ฅผ ์ˆœํšŒํ•  ๋•Œ ArrayList๋Š” ๋‚ด๋ถ€ ๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•ด ์ง์ ‘ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ์ด๋กœ ์ธํ•ด ์ธ๋ฑ์Šค๋ฅผ ์‚ฌ์šฉํ•œ ์ˆœํšŒ๋Š” ๋งค์šฐ ๋น ๋ฅด๋‹ค. ์š”์†Œ๋ฅผ ์ˆœํšŒํ•  ๋•Œ์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)์ด๋ฉฐ, ๊ฐ ์š”์†Œ์— ๋Œ€ํ•œ ์ ‘๊ทผ์€ O(1)์ด๋‹ค.
  • ์žฅ์ : ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก ๋•๋ถ„์— ์บ์‹œ ์ง€์—ญ์„ฑ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด, ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ๋น ๋ฅด๋‹ค. ์ด๋กœ ์ธํ•ด CPU ์บ์‹œ ํšจ์œจ์ด ๋†’์•„์ง€๋ฉฐ, ์ˆœํšŒ ์„ฑ๋Šฅ์ด ์šฐ์ˆ˜ํ•˜๋‹ค.

๋‹จ์ 

๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋ฅผ ์กฐ์ •ํ•  ๋•Œ (์˜ˆ: ์š”์†Œ ์ถ”๊ฐ€ ์‹œ) ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•˜๊ณ  ๊ธฐ์กด ๋ฐฐ์—ด์˜ ๋‚ด์šฉ์„ ๋ณต์‚ฌํ•˜๋Š” ์ž‘์—…์ด ํ•„์š”ํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ˆœํšŒํ•  ๋•Œ๋Š” ์ด๋Ÿฌํ•œ ๋น„์šฉ์ด ์—†๋‹ค.

 

2. LinkedList

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

LinkedList๋Š” ๋…ธ๋“œ ๊ธฐ๋ฐ˜์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ๊ฐ ๋…ธ๋“œ๋Š” ๋ฐ์ดํ„ฐ์™€ ๋‹ค์Œ ๋…ธ๋“œ(๊ทธ๋ฆฌ๊ณ  ๋•Œ๋กœ๋Š” ์ด์ „ ๋…ธ๋“œ์— ๋Œ€ํ•œ ์ฐธ์กฐ)๋ฅผ ํฌํ•จํ•œ๋‹ค.

์š”์†Œ ์ˆœํšŒ

์„ฑ๋Šฅ

LinkedList์—์„œ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•  ๋•Œ, ์ฒซ ๋ฒˆ์งธ ๋…ธ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๊ฐ ๋…ธ๋“œ๋ฅผ ๋”ฐ๋ผ๊ฐ€๋ฉฐ ์ˆœํšŒํ•œ๋‹ค. ์ด ์ž‘์—…์€ O(n) ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ๊ฐ ๋…ธ๋“œ ์ ‘๊ทผ์€ O(1)์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ฐ ๋…ธ๋“œ ์ ‘๊ทผ ์‹œ ํฌ์ธํ„ฐ๋ฅผ ๋”ฐ๋ผ๊ฐ€์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์˜ ์ง€์—ญ์„ฑ์ด ๋–จ์–ด์ ธ ์บ์‹œ ํšจ์œจ์ด ๋‚ฎ์„ ์ˆ˜ ์žˆ๋‹ค.

์žฅ์ 

์‚ฝ์ž…๊ณผ ์‚ญ์ œ ์ž‘์—…์ด O(1) ์‹œ๊ฐ„ ๋ณต์žก๋„๋ฅผ ๊ฐ€์ง€๋ฉฐ, ํŠนํžˆ ๋ฆฌ์ŠคํŠธ์˜ ์ค‘๊ฐ„์—์„œ ์ž‘์—…ํ•  ๋•Œ ์œ ๋ฆฌ๋‹ค.

๋‹จ์ 

์ˆœํšŒ ์ค‘์— ๋…ธ๋“œ์˜ ๋งํฌ๋ฅผ ๋”ฐ๋ผ๊ฐ€์•ผ ํ•˜๋ฏ€๋กœ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ์ด ๋น„์—ฐ์†์ ์ด๋‹ค. ์ด๋กœ ์ธํ•ด CPU ์บ์‹œ์˜ ์ง€์—ญ์„ฑ์ด ๋‚ฎ์•„์ง€๊ณ , ์ˆœํšŒ ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

 

์„ฑ๋Šฅ ๋น„๊ต ์š”์•ฝ

์ˆœํšŒ ์†๋„

ArrayList๊ฐ€ LinkedList๋ณด๋‹ค ์ˆœํšŒ ์†๋„๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ๋น ๋ฅด๋‹ค. ์ด๋Š” ArrayList๊ฐ€ ์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ๋ธ”๋ก์„ ์‚ฌ์šฉํ•˜๊ณ , ์ธ๋ฑ์Šค๋ฅผ ํ†ตํ•œ ์ง์ ‘ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ

ArrayList๋Š” ์บ์‹œ ์ง€์—ญ์„ฑ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ์–ด CPU ์บ์‹œ ํšจ์œจ์ด ๋†’๋‹ค. ๋ฐ˜๋ฉด LinkedList๋Š” ๋น„์—ฐ์†์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ ‘๊ทผ ๋•Œ๋ฌธ์— ์บ์‹œ ํšจ์œจ์ด ๋‚ฎ๋‹ค.

 

๊ฒฐ๋ก 

 

  • ArrayList๋Š” ์š”์†Œ๋ฅผ ์ˆœํšŒํ•  ๋•Œ ์„ฑ๋Šฅ์ด ๋” ์šฐ์ˆ˜ํ•˜๋ฉฐ, ์ฝ๊ธฐ ์ž‘์—…์ด ๋น ๋ฅด๋‹ค. ๋”ฐ๋ผ์„œ, ์š”์†Œ๋ฅผ ์ž์ฃผ ์ฝ๊ณ , ์ˆœํšŒ๊ฐ€ ๋งŽ์€ ๊ฒฝ์šฐ์— ์ ํ•ฉํ•˜๋‹ค.
  • LinkedList๋Š” ์‚ฝ์ž…๊ณผ ์‚ญ์ œ๊ฐ€ ๋นˆ๋ฒˆํ•˜๊ฒŒ ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ์— ๋” ์ ํ•ฉํ•˜๋‹ค. ํ•˜์ง€๋งŒ ์š”์†Œ๋ฅผ ์ˆœํšŒํ•  ๋•Œ๋Š” ์„ฑ๋Šฅ์ด ๋–จ์–ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

๋”ฐ๋ผ์„œ, ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ์š”๊ตฌ ์‚ฌํ•ญ์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ๋ฆฌ์ŠคํŠธ ๊ตฌํ˜„์ฒด๋ฅผ ์„ ํƒํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•˜๋‹ค.