1. Collections Framework
2. Collection ์ธํฐํ์ด์ค
3. List ์ธํฐํ์ด์ค
3.1. ArrayList
3.2. LinkedList
3.3. Stack๊ณผ Queue
1. Collections Framework

์ปฌ๋ ์ ํ๋ ์์์ด๋, '๋ฐ์ดํฐ ๊ตฐ์ ์ ์ฅํ๋ ํด๋์ค๋ค์ ํ์คํํ ์ค๊ณ'๋ฅผ ๋ปํฉ๋๋ค. ์ปฌ๋ ์ ํ๋ ์์์ ์ปฌ๋ ์ ์ ๋ค๋ฃจ๋ ๋ฐ ํ์ํ ๋ค์ํ๊ณ ํ๋ถํ ํด๋์ค๋ค์ ์ ๊ณตํ๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์ ์ง์ ์๋นํ ๋์ด ์ฃผ๊ณ ์์ผ๋ฉฐ, ๋ํ ์ธํฐํ์ด์ค์ ๋คํ์ฑ์ ์ด์ฉํ ๊ฐ์ฒด์งํฅ์ ์ค๊ณ๋ฅผ ํตํด ํ์คํ๋์ด ์๊ธฐ ๋๋ฌธ์ ์ฌ์ฌ์ฉ์ฑ์ด ๋์ ์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค๋ ์ฅ์ ์ด ์์ต๋๋ค.
์ปฌ๋ ์ ํ๋ ์์์๋ ์ปฌ๋ ์ ๊ทธ๋ฃน์ ํฌ๊ฒ 3๊ฐ์ง ํ์ ์ด ์กด์ฌํ๋ค๊ณ ์ธ์ํ๊ณ 3๊ฐ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ํ์์ต๋๋ค. ๊ทธ๋ฆฌ๊ณ ์ธํฐํ์ด์ค List์ Set์ ๊ณตํต๋ ๋ถ๋ถ์ ๋ค์ ๋ฝ์์ ์๋ก์ด ์ธํฐํ์ด์ค์ธ Collections๋ฅผ ์ถ๊ฐ๋ก ์ ์ํ์์ต๋๋ค.
์ปฌ๋ ์ ํ๋ ์์์๋ ์ธ ๊ฐ์ง์ ์ธํฐํ์ด์ค์ ๋ฟ๋ฆฌ๋ฅผ ๋๊ณ ์๋ ๋ค์ํ ํด๋์ค๋ค์ด ์กด์ฌํ๋ฉฐ, ๊ฐ์ ์ธํฐํ์ด์ค์ ๋ฟ๋ฆฌ๋ฅผ ๋๊ณ ์๋ ํด๋์ค๋ค์ด๋ผ๊ณ ํด๋ ๋ค์ํ ํน์ง์ ๊ฐ์ง๊ณ ์์ต๋๋ค. ์ํฉ์ ๋ฐ๋ผ ๋ค์ํ ํผํฌ๋จผ์ค๋ฅผ ๋ณด์ฌ์ฃผ๊ธฐ๋ ํ๋ฉฐ, ๊ผญ ์ฌ์ฉํด์ผ๋ง ํ๋ ์ํฉ์ด ๋ถ๋ช ํ ๋ฅ์น ์๋ ์์ ๊ฒ์ ๋๋ค. ๊ทธ๋ ๊ธฐ์ ์ ์ ํ ์ปฌ๋ ์ ํด๋์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด์ ๊ฐ๋ฐ์๋ ๋ค์ํ ํด๋์ค์ ํน์ง์ ๋ํด ์ ๋ฐ์ ์ธ ์ดํด๋ฅผ ํ๊ณ ์์ด์ผ๋ง ํฉ๋๋ค.
2. Collection ์ธํฐํ์ด์ค
List์ Set์ ์กฐ์์ธ Collection ์ธํฐํ์ด์ค๋ ์ปฌ๋ ์ ํด๋์ค์ ์ ์ฅ๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ , ์ถ๊ฐํ๊ณ ์ญ์ ํ๋ ๋ฑ ์ปฌ๋ ์ ์ ๋ค๋ฃจ๋๋ฐ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋ฉ์๋๋ฅผ ์ ์ํ๊ณ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด์ 'add' ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์ ๊ฐ์ฒด๋ฅผ ์ปฌ๋ ์ ์ ์ถ๊ฐํ ์ ์์ผ๋ฉฐ, 'isEmpty()' ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ปฌ๋ ์ ์ ๋ฐ์ดํฐ๊ฐ ์กด์ฌํ๋์ง ์ฝ๊ฒ ํ์ธํ ์ ์์ต๋๋ค.
3. List ์ธํฐํ์ด์ค

List ์ธํฐํ์ด์ค๋ ์ค๋ณต์ ํ์ฉํ๋ฉด์ ์ ์ฅ์์๊ฐ ์ ์ง๋๋ ์ปฌ๋ ์ ์ ๊ตฌํํ๋๋ฐ ์ฌ์ฉ๋ฉ๋๋ค. List ์ธํฐํ์ด์ค์๋ ์ปฌ๋ ์ ๋ฐ์ดํฐ๋ค์ ์ปจํธ๋กคํ ์ ์๋ ๋ค์ํ ๋ฉ์๋๋ค์ด ์กด์ฌํฉ๋๋ค.
3.1. ArrayList
ArrayList๋ ์ปฌ๋ ์ ํ๋ ์์์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์ปฌ๋ ์ ํด๋์ค์ผ ๊ฒ์ ๋๋ค. ArrayList๋ List ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ ์ฅ์์๊ฐ ์ ์ง๋๊ณ ์ค๋ณต์ ํ์ฉํ๋ค๋ ๊ณตํต์ ์ธ ํน์ง์ ๊ฐ๊ณ ์์ต๋๋ค.
ArrayList๋ Object๋ฐฐ์ด์ ์ด์ฉํด์ ๋ฐ์ดํฐ๋ฅผ ์์ฐจ์ ์ผ๋ก ์ ์ฅํฉ๋๋ค. ์๋ฅผ ๋ค๋ฉด, ์ฒซ ๋ฒ์งธ๋ก ์ ์ฅํ ๊ฐ์ฒด๋ Object๋ฐฐ์ด์ 0๋ฒ์งธ ์์น์ ์ ์ฅ๋๊ณ ๊ทธ ๋ค์์ ์ ์ฅํ๋ ๊ฐ์ฒด๋ 1๋ฒ์งธ ์์น์ ์ ์๋ฉ๋๋ค. ์ด๋ฐ ์์ผ๋ก ๊ณ์ ๋ฐฐ์ด์ ์์๋๋ก ์ ์ฅ๋๋ฉฐ, ๋ฐฐ์ด์ ๋ ์ด์ ์ ์ฅํ ๊ณต๊ฐ์ด ์์ผ๋ฉด ๋ณด๋ค ํฐ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํด์ ๊ธฐ์กด์ ๋ฐฐ์ด์ ์ ์ฅ๋ ๋ด์ฉ์ ์๋ก์ด ๋ฐฐ์ด๋ก ๋ณต์ฌํ ๋ค์์ ์ ์ฅํฉ๋๋ค.
์ด๋ฌํ ArrayList์ ํน์ง ๋๋ฌธ์, ArrayList๋ฅผ ์ฒ์ ์์ฑํ ๋, ์ ์ฅํ ์์์ ๊ฐ์๋ฅผ ๊ณ ๋ คํ์ฌ ์ค์ ์ ์ฅํ ๊ฐ์๋ณด๋ค ์ฝ๊ฐ ์ฌ์ ์๋ ํฌ๊ธฐ๋ก ํ๋ ๊ฒ์ด ์ข์ต๋๋ค. ์์ฑํ ๋ ์ง์ ํ ํฌ๊ธฐ๋ณด๋ค ๋ ๋ง์ ๊ฐ์ฒด๋ฅผ ์ ์ฅํ๋ฉด ArrayList์ ํฌ๊ธฐ๋ฅผ ํ์ฅํ๋ ์์ ์ด ๊ต์ฅํ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
3.2. LinkedList
๋ฐฐ์ด์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ํํ์ ์๋ฃ๊ตฌ์กฐ๋ก ๊ตฌ์กฐ๊ฐ ๊ฐ๋จํ๋ฉฐ ์ฌ์ฉํ๊ธฐ ์ฝ๊ณ ๋ฐ์ดํฐ๋ฅผ ์ป์ด์ค๋๋ฐ ๊ฑธ๋ฆฌ๋ ์๊ฐ์ด ๊ฐ์ฅ ๋น ๋ฅด๋ค๋ ์ฅ์ ์ ๊ฐ์ง๊ณ ์์ง๋ง ํฌ๊ธฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๊ณ , ๋ฐฐ์ด์ ์ค๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ๋ ค๋ฉด ๋น์๋ฆฌ๋ฅผ ๋ง๋ค๊ธฐ ์ํด ํฐ ์ค๋ฒํค๋๋ฅผ ์ ๋ฐํ๋ค๋ ๋จ์ ์ด ์์ต๋๋ค.
์ด๋ฌํ ๋ฐฐ์ด์ ๋จ์ ์ ๋ณด์ํ๊ธฐ ์ํด LinkedList๋ผ๋ ์๋ฃ๊ตฌ์กฐ๊ฐ ๊ณ ์๋์์ต๋๋ค. ๋ฐฐ์ด์ ๋ชจ๋ ๋ฐ์ดํฐ๊ฐ ์ฐ์์ ์ผ๋ก ์กด์ฌํ์ง๋ง LinkedList๋ ๋ถ์ฐ์์ ์ผ๋ก ์กด์ฌํ๋ ๋ฐ์ดํฐ๋ฅผ ์๋ก ์ฐ๊ฒฐํ ํํ๋ก ๊ตฌ์ฑ๋์ด ์์ต๋๋ค. ์ฆ ๊ฐ ๋ ธ๋๊ฐ ์์ ๊ณผ ์ฐ๊ฒฐ๋ ๋ ธ๋์ ์ฐธ์กฐ์ ๋ฐ์ดํฐ๋ก ๊ตฌ์ฑ๋์ด์๋ ๊ฒ์ด์ฃ .
LinkedList์์์ ๋ฐ์ดํฐ ์ญ์ ๋ ๊ฐ๋จํฉ๋๋ค. ์ญ์ ํ๊ณ ์ ํ๋ ์์์ ์ด์ ์์๊ฐ ์ญ์ ํ๊ณ ์ ํ๋ ์์์ ๋ค์ ์์๋ฅผ ์ฐธ์กฐํ๋๋ก ๋ณ๊ฒฝํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค. ์ฆ, ๋จ ํ๋์ ์ฐธ์กฐ๋ง ๋ณ๊ฒฝํ๋ฉด ์ญ์ ๊ฐ ์ด๋ฃจ์ด์ง๋ ๊ฒ์ ๋๋ค. ๋ฐฐ์ด์ฒ๋ผ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๋ ๊ณผ์ ์ด ์๊ธฐ ๋๋ฌธ์ ์ฒ๋ฆฌ์๋๊ฐ ๊ต์ฅํ ๋น ๋ฅผ ์ ๋ฐ์ ์์ต๋๋ค. ์๋ก์ด ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐํ ๋ ๋ํ ์๋ก์ด ์์๋ฅผ ์์ฑ ํ ์ถ๊ฐํ๊ณ ์ ํ๋ ์์น์ ์ด์ ์์์ ์ฐธ์กฐ๋ฅผ ์๋ก์ด ์์์ ๋ํ ์ฐธ์กฐ๋ก ๋ณ๊ฒฝํด์ฃผ๊ณ , ์๋ก์ด ์์๊ฐ ๊ทธ ๋ค์ ์์๋ฅผ ์ฐธ์กฐํ๋๋ก ๋ณ๊ฒฝํ๊ธฐ๋ง ํ๋ฉด ๋ฉ๋๋ค.
ํ์ง๋ง LinkedList์ ์ด๋๋ฐฉํฅ์ด ๋จ๋ฐฉํฅ์ด๊ธฐ ๋๋ฌธ์ ๋ค์ ์์์ ๋ํ ์ ๊ทผ์ ์ฝ์ง๋ง, ์ด์ ์์์ ๋ํ ์ ๊ทผ์ด ์ด๋ ต๋ค๋ ๋จ์ ์ด ์กด์ฌํฉ๋๋ค. ์ด ์ ์ ๋ณด์ํ ๊ฒ์ด ๋ฐ๋ก ๋๋ธ LinkedList์ ๋๋ค. ๋๋ธ LinkedList๋ ๋จ์ํ LinkedList์ ์ฐธ์กฐ๋ณ์๋ฅผ ํ๋ ๋ ์ถ๊ฐํ์ฌ ๋ค์ ์์์ ๋ํ ์ฐธ์กฐ๋ฟ๋ง ์๋๋ผ ์ด์ ์์์ ๋ํ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํ๋๋ก ํ ๊ฒ์ ๋๋ค. ๋ณดํต LinkedList๋ณด๋ค ๋๋ธ LinkedList๊ฐ ๊ฐ ์์์ ๋ํ ์ ๊ทผ๊ณผ ์ด๋์ด ์ฝ๊ธฐ์ ๋ง์ด ์ฌ์ฉ๋๋ ํธ์ ๋๋ค.
์ค์ ๋ก LinkedList๋ ์์์ ์ธ๊ธํ LinkedList๊ฐ ์๋ ๋๋ธ LinkedList๋ก ๊ตฌํ๋์ด ์์ต๋๋ค. ์ด๋ LinkedList์ ๋จ์ ์ธ ๋ฎ์ ์ ๊ทผ์ฑ์ ๋์ด๊ธฐ ์ํด ํ๊ฒ์ด์ง์. LinkedList ์ญ์ List ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ArrayList์ ๋ด๋ถ๊ตฌํ๋ฐฉ๋ฒ๋ง ๋ค๋ฅผ๋ฟ ์ ๊ณตํ๋ ๋ฉ์๋์ ์ข ๋ฅ์ ๊ธฐ๋ฅ์ ๊ฑฐ์ ๊ฐ์ต๋๋ค.
ArrayList vs LinkedList
์์ฐจ์ ์ผ๋ก ์ถ๊ฐ/์ญ์ ํ๋ ๊ฒฝ์ฐ์๋ ArrayList๊ฐ LinkedList๋ณด๋ค ๋น ๋ฅด๋ค.
์ค๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ถ๊ฐ/์ญ์ ํ๋ ๊ฒฝ์ฐ์๋ LinkedList๊ฐ ArrayList๋ณด๋ค ๋น ๋ฅด๋ค.
3.3. Stack๊ณผ Queue
์๋ฐ์์๋ ๋ํ Stack๊ณผ Queue๋ฅผ ๋ฐ๋ก ๊ตฌํํ ํ์ ์์ด ๋ฐ๋ก ์ฌ์ฉํ ์ ์๋๋ก ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ํ์ง๋ง ์คํ์ Stackํด๋์ค๋ก ๊ตฌํํ์ฌ ์ ๊ณตํ๊ณ ์์ง๋ง ํ๋ Queue์ธํฐํ์ด์ค๋ก๋ง ์ ์ํด ๋์์ ๋ฟ ๋ณ๋์ ํด๋์ค๋ฅผ ์ ๊ณตํ๊ณ ์์ง ์์ต๋๋ค. ๋์ Queue์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ ํด๋์ค๋ค์ด ์์ด์ javadoc์ ์ฐธ๊ณ ํ์ฌ ๋์์๋ ํด๋์ค๋ค ์ค ํ๋๋ฅผ ์ ํํด์ ์ฌ์ฉํด์ผ๋ง ํฉ๋๋ค.