-
[์๋ฐ(JAVA)] ๋ฐฐ์ด๊ณผ LinkedList์ ์ฅ๋จ์ ,์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ArrayList vs LinkedList ์ฑ๋ฅ ๋น๊ต์นดํ ๊ณ ๋ฆฌ ์์ 2023. 7. 20. 12:53728x90
๐ท๋ฐฐ์ด์ ์ฅ๋จ์
๐์ฅ์ : ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ(์ ๊ทผ์๊ฐ, access time)์ด ์งง๋ค.
- n๋ฒ์งธ์ ์ฃผ์๋ฅผ ์์๋ผ ์ ์๋ค.
๐ ๋จ์ 1: ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค.
- ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํด์ผ ํ๋ ๊ฒฝ์ฐ โ ๋ ํฐ ๋ฐฐ์ด์ ์์ฑํ ํ โก ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํด์ผํ๋ค.
- ํฌ๊ธฐ ๋ณ๊ฒฝ์ ํผํ๊ธฐ ์ํด ์ถฉ๋ถํ ํฐ ๋ฐฐ์ด์ ์์ฑํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋๋ค.
๐ ๋จ์ 2: ๋น์์ฐจ์ ์ธ ๋ฐ์ดํฐ์ ์ถ๊ฐ, ์ญ์ ์ ์๊ฐ์ด ๋ง์ด ๊ฑธ๋ฆฐ๋ค.
- ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๊ฑฐ๋ ์ญ์ ํ๊ธฐ ์ํด ๋ค๋ฅธ ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ฒจ์ผ ํจ
- ๊ทธ๋ฌ๋ ์์ฐจ์ ์ธ ๋ฐ์ด์ฒ ์ถ๊ฐ(๋์ ์ถ๊ฐ)์ ์ญ์ (๋๋ถํฐ ์ญ์ )๋ ๋น ๋ฅด๋ค.
*๋น์์ฐจ์ ์ธ ๋ฐ์ดํฐ: ๋ฐฐ์ด์ ์ค๊ฐ์ ์๋ ๋ฐ์ดํฐ
๐๋ฐฐ์ด์ ๋จ์ ์ ๋ณด์ํ๊ฒ LinkedList์ด๋ค.
1. ํฌ๊ธฐ๋ณ๊ฒฝ ๋ถ๊ฐ
2. ์ถ๊ฐ,์ญ์ ์ ์๊ฐ์์ ํผ
๐ทLinkedList
๋ฐฐ์ด๊ณผ๋ ๋ฌ๋ฆฌ ๋ถ์ฐ์์ ์ผ๋ก ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์ฐ๊ฒฐ(link)ํ๊ฒ
- ๋ถ์ฐ์์ ์ด๋ค
- ๋ง์น ๊ธฐ์ฐจ๋ฅผ ์ฐ๊ฒฐํ๊ฒ๊ณผ ๊ฐ๋ค. = ๋ณ๊ฒฝ์ ์ ๋ฆฌํจ
<์ญ์ ์>
์ญ์ ์ ๋ ธ๋(์ฐธ์กฐ๊ฐ)๋ง ๋ฐ๊พธ๋ฉด ๋๋ค.
์์ ์์๋ ๋๋ฒ์ ์ฐธ์กฐ๋ณ๊ฒฝ๋ง ์งํํ๋ฉด ๋๋ค.
๐ทLinkedList ์ด์ค ์ฐ๊ฒฐ๋ฆฌ์คํธ
LinkedList๋ ์ด๋๋ฐฉํฅ์ด ๋จ๋ฐฉํฅ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ ์์์ ๋ํ ์ ๊ทผ์ ์ฝ์ง๋ง ์ด์ ์์์ ๋ํ ์ ๊ทผ์ ์ด๋ ต๋ค.
์ด ์ ์ ๋ณด์ํ๊ฒ ์ด์ค ์ฐ๊ฒฐ๋ฆฌ์คํธ์ด๋ค.
๋ถ์ฐ์์ ์ด๋ผ ์ ๊ทผ์ฑ์ด ๋์๊ฒ์ ๋ณด์ํ๊ธฐ์ํด ๋์จ๊ฒ์ผ๋ก
์ ๋ค๋ก ์ด๋ํ ์ ์๊ฒ ์ฐ๊ฒฐํ๊ฒ์ด๋ค.
์ฒ์ ์ธ๋ฑ์ค์ ๋ง์ง๋ง์ธ๋ฑ์ค๋ฅผ ์ฐ๊ฒฐํ doubly circuial linked list๋ ์๋ค.
๐ทArrayList vs LinkedList ์ฑ๋ฅ ๋น๊ต
1) ์์ฐจ์ ์ผ๋ก ์ถ๊ฐ/์ญ์ ํ ๋ LinkedList๋ ๊ฐ ๊ฐ์ฒด๋ฅผ ํ๋์ฉ ๋ง๋ค๊ณ ์ฐพ์์ผํด์ ์ด๋๋ ArrayList๊ฐ ๋ ๋น ๋ฅด๋ค.
2) ๋น์์ฐจ์ ์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ/์ญ์ - LinkedList๊ฐ ๋ ๋น ๋ฅด๋ค.
3) ์ ๊ทผ์๊ฐ - ArrayList๊ฐ ๋ ๋น ๋ฅด๋ค.
์ธ๋ฑ์ค๊ฐ n์ธ ๋ฐ์ดํฐ์ ์ฃผ์ = ๋ฐฐ์ด์ ์ฃผ์ + n * ๋ฐ์ดํฐ ํ์ ์ ํฌ๊ธฐ
<๊ฒฐ๋ก >
ArrayList : ๋ฐฐ์ด ๊ธฐ๋ฐ(์ฐ์์ )
LinkedList: ์ฐ๊ฒฐ ๊ธฐ๋ฐ(๋ถ์ฐ์์ )
๋ค๋ฃจ๊ณ ์ ํ๋ ๋ฐ์ดํฐ์ ๊ฐ์๊ฐ ๋ณํ์ง ์๋ ๊ฒฝ์ฐ๋ผ๋ฉด ArrayList๋ฅผ ์ถ์ฒ
๋ฐ์ดํฐ ๊ฐ์์ ๋ณ๊ฒฝ์ด ์ฆ๋ค๋ฉด LinkedList๋ฅผ ์ฌ์ฉํ๊ธธ ์ถ์ฒํจ
*์ฒ์ ์์ ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋๋ ArrayList๋ฅผ ์ฌ์ฉํ ๋ค์, ์์ ์์๋ LinkedList๋ก ๋ฐ์ดํฐ๋ฅผ ์ฎ๊ฒจ์ ์์ ํ๋ฉด ๋ ์ข์ ํจ์จ์ ๋ผ ์ ์๋ค.์ด ์ธ์๋ ์ฌ๋ฌ๊ฐ์ง ์ปฌ๋ ์ ์ด ์๊ณ , ๋ฐ์ดํฐ๋ฅผ ์ ๋ค๋ฃจ๊ธฐ ์ํด์๋ ์ด๋ค์์ผ๋ก ์ ์ฅ๋๋์ง, ์ด๋ค ๊ตฌ์กฐ๋ก ์ ํด์ผ ํ๋์ง๋ฅผ ํ์ ํด์ผํ๋ค.
728x90