data structure,

ArrayList์™€ LinkedList

Ella Ella Follow Nov 19, 2021 ยท 2 mins read
ArrayList์™€ LinkedList
Share this

๐Ÿ“š

๊ฐœ๋… 1๏ธโƒฃ ArrayList vs LinkedList

์ž๋ฐ” List ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„์ฒด์—๋Š” Stack, Vector, ArrayList, LinkedList๊ฐ€ ์žˆ๋‹ค. ์˜ค๋Š˜์€ ์ด๊ฒƒ๋“ค ์ค‘์—์„œ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์ธ List ์ธํ„ฐํŽ˜์ด์Šค ๊ตฌํ˜„์ฒด์ธ ArrayList์™€ LinkedList์˜ ํŠน์ง•๊ณผ ์ด ๋‘˜์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณด์ž.1

[1] ArrayList

  • ์ค‘๋ณต ํ—ˆ์šฉ
  • ์ˆœ์„œ ์œ ์ง€
  • ์ธ๋ฑ์Šค๋กœ ์›์†Œ ๊ด€๋ฆฌํ•จ
  • ๋ฐฐ์—ด์„ ์ถ”๊ฐ€, ์‚ญ์ œํ•˜๋Š” ๋ฉ”์†Œ๋“œ๊ฐ€ ์กด์žฌํ•œ๋‹ค๋Š” ์ ์—์„œ ๋ฐฐ์—ด๊ณผ ๊ตฌ๋ณ„๋จ(๋ฐฐ์—ด์€ ํฌ๊ธฐ๊ฐ€ ์ง€์ •๋˜๋ฉด ๊ณ ์ •)
  • ์šฉ๋Ÿ‰์ด ๊ฝ‰์ฐฌ ์ƒํƒœ์—์„œ ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ์„ ๋•Œ, ๋ฐฐ์—ด์ด ๋™์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ, ๋” ํฐ ์šฉ๋Ÿ‰์˜ ๋ฐฐ์—ด์„ ๋งŒ๋“ค์–ด์„œ ์˜ฎ๊น€

(1) add(E element)

  • ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ

(2) add(int index, E element)

  • ์›์†Œ๋ฅผ index ์œ„์น˜์— ์ถ”๊ฐ€ํ•˜๊ธฐ
  • index ์œ„์น˜์— ๋ฐ์ดํ„ฐ๋ฅผ ๋„ฃ์œผ๋ ค๋ฉด index ์œ„์น˜๋ถ€ํ„ฐ ๊ทธ ๋’ค์— ์žˆ๋Š” ์›์†Œ๋“ค์„ ํ•œ์นธ์”ฉ ๋ฏธ๋ค„์„œ ์ค‘๊ฐ„์— ๊ณต๊ฐ„์„ ๋งŒ๋“œ๋Š” ์ž‘์—…์„ ํ•ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆผ

(3) remove(int index)

  • index ์œ„์น˜์˜ ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ
  • ๋งˆ์ง€๋ง‰ ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜๋ฉด O(1)์ด์ง€๋งŒ, ์ค‘๊ฐ„์ด๋‚˜ ์ฒ˜์Œ์˜ ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜๋ฉด ๋นˆ๊ณต๊ฐ„์„ ๋‹ค์‹œ ์ฑ„์›Œ์•ผํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„์ด ๋งŽ์ด ๊ฑธ๋ฆผ

(4) get(int index)

  • index์— ํ•ด๋‹นํ•˜๋Š” ์›์†Œ ์ฐพ์•„์˜ค๊ธฐ
  • index์— ํ•ด๋‹นํ•˜๋Š” ์›์†Œ๋ฅผ O(1)๋กœ ๊ทธ๋ƒฅ ์ฐพ์•„์˜ฌ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ํƒ์ƒ‰์— ๋งค์šฐ ์œ ๋ฆฌํ•จ

[2] LinkedList

  • ๋‚ด๋ถ€์ ์œผ๋กœ ์–‘๋ฐฉํ–ฅ์˜ ์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์–ด์„œ ์ฐธ์กฐํ•˜๋ ค๋Š” ์›์†Œ์— ๋”ฐ๋ผ ์ฒ˜์Œ๋ถ€ํ„ฐ ์ˆœ๋ฐฉํ–ฅ ๋˜๋Š” ์—ญ์ˆœ์œผ๋กœ ์ˆœํšŒํ•˜๋Š” ๋ฆฌ์ŠคํŠธ
  • ๋ฐฐ์—ด์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด์„œ LinkedList๊ฐ€ ๊ณ ์•ˆ๋จ

๐Ÿง ๋ฐฐ์—ด์˜ ๋‹จ์  ๐Ÿง

  • ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†์Œ
    • ํฌ๊ธฐ๋ฅผ ๋ณ€๊ฒฝํ•˜๋ ค๋ฉด ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด์„œ ๋ณต์‚ฌํ•ด์•ผ ํ•จ
    • ์‹คํ–‰ ์†๋„๋ฅผ ํ–ฅ์ƒ์‹œํ‚ค๊ธฐ ์œ„ํ•ด์„œ๋Š” ์ดˆ๊ธฐ ์šฉ๋Ÿ‰์„ ํฌ๊ฒŒ ์„ค์ •ํ•ด๋†”์•ผ ํ•˜๋Š”๋ฐ, ์ด๊ฒƒ์ด ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๊ฐ€ ๋  ์ˆ˜ ์žˆ์Œ
  • ๋น„์ˆœ์ฐจ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€/์‚ญ์ œํ•  ๋•Œ ์‹œ๊ฐ„์ด ์˜ค๋ž˜ ๊ฑธ๋ฆผ
    • ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜, ๋งˆ์ง€๋ง‰์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๊ฑด ๋น ๋ฆ„
    • ๋ฐฐ์—ด์˜ ์ค‘๊ฐ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด, ๋นˆ ๊ณต๊ฐ„์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ์ธ๋ฑ์Šค๋ถ€ํ„ฐ ๊ทธ ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ๋’ค๋กœ ๋ฐ€์–ด์•ผ ํ•จ
    • ๋ฐฐ์—ด์˜ ์ค‘๊ฐ„์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด, ๋นˆ ๊ณต๊ฐ„์„ ์ฑ„์šฐ๊ธฐ ์œ„ํ•ด ํ•ด๋‹น ์ธ๋ฑ์Šค ๋’ค์— ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋“ค์„ ์•ž์œผ๋กœ ์ฑ„์›Œ์•ผ ํ•จ

(1) add(E element)

  • ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์— ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ
  • LinkedList๋Š” ์ธ๋ฑ์Šค๊ฐ€ ์—†์Œ
  • ๋”ฐ๋ผ์„œ ์›์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Head์„œ๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰๊นŒ์ง€ ์ฐพ์•„๊ฐ€์•ผํ•˜๋ฏ€๋กœ, ์‹œ๊ฐ„์ด ์˜ค๋ž˜๊ฑธ๋ฆผ

(2) add(int index, E element)

  • ์›์†Œ๋ฅผ index ์œ„์น˜์— ์ถ”๊ฐ€ํ•˜๊ธฐ
  • Head์„œ๋ถ€ํ„ฐ ํ•ด๋‹น ์œ„์น˜๊นŒ์ง€ ํƒ์ƒ‰ํ•ด์„œ ์ฐพ์•„๊ฐ€์•ผํ•˜๋ฏ€๋กœ, ์‹œ๊ฐ„์ด ๊ฑธ๋ฆผ

(3) remove(int index)

  • index ์œ„์น˜์˜ ์›์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ
  • ์‚ญ์ œํ•˜๋ ค๋Š” ์›์†Œ ์•ž,๋’ค์˜ ์ฐธ์กฐ ์ƒํƒœ๋ฅผ ๋ฐ”๊พธ๊ธฐ๋งŒ ํ•˜๋ฉด ๋ผ์„œ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(1)์ž„

(4) get(int index)

  • index์— ํ•ด๋‹นํ•˜๋Š” ์›์†Œ ์ฐพ์•„์˜ค๊ธฐ
  • index์— ํ•ด๋‹นํ•˜๋Š” ์›์†Œ๋ฅผ ์ฐพ๊ธฐ ์œ„ํ•ด์„œ๋Š” Head์—์„œ๋ถ€ํ„ฐ ์ญ‰์ญ‰ ๊ฒ€์ƒ‰ํ•ด๋‚˜๊ฐ€์•ผ ํ•˜๋ฏ€๋กœ, ์ตœ์•…์˜ ๊ฒฝ์šฐ ์‹œ๊ฐ„๋ณต์žก๋„๊ฐ€ O(n)์ž„

--------------------

๐ŸŒŸ ArrayList LinkedList
ํƒ์ƒ‰ ํšจ์œจ์ (์ธ๋ฑ์Šค ๊ธฐ๋ฐ˜) ๋น„ํšจ์œจ์ (ํ—ค๋“œ์—์„œ๋ถ€ํ„ฐ ์ญ‰์ญ‰)
์ถ”๊ฐ€/์‚ญ์ œ ๋น„ํšจ์œจ์ (๋นˆ ์นธ ์ฑ„์›Œ์•ผ ํ•จ) ํšจ์œจ์ (์•ž๋’ค ๋…ธ๋“œ ์ฐธ์กฐ๋งŒ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋จ)

[์ฐธ๊ณ  ์‚ฌ์ดํŠธ]
1: https://devlog-wjdrbs96.tistory.com/64
2: https://medium.com/zero-equals-false/arraylist-vs-linkedlist-f8c5099153b5

Join Newsletter
Get the latest news right in your inbox. We never spam!
Ella
Written by Ella Follow
Android Developer, love to explore new ideas and write on my morning coffee!