๐
๊ฐ๋ 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