[JAVA] Collections Framework...1

Collections Framework

https://www.pinterest.co.kr/pin/538320961679331324/visual-search/?cropSource=6&h=326&w=530&x=16&y=10

 

 

์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›์ด๋ž€, '๋ฐ์ดํ„ฐ ๊ตฐ์„ ์ €์žฅํ•˜๋Š” ํด๋ž˜์Šค๋“ค์„ ํ‘œ์ค€ํ™”ํ•œ ์„ค๊ณ„'๋ฅผ ๋œปํ•ฉ๋‹ˆ๋‹ค.  ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›์€ ์ปฌ๋ ‰์…˜์„ ๋‹ค๋ฃจ๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹ค์–‘ํ•˜๊ณ  ํ’๋ถ€ํ•œ ํด๋ž˜์Šค๋“ค์„ ์ œ๊ณตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์˜ ์ง์„ ์ƒ๋‹นํžˆ ๋œ์–ด ์ฃผ๊ณ  ์žˆ์œผ๋ฉฐ, ๋˜ํ•œ ์ธํ„ฐํŽ˜์ด์Šค์™€ ๋‹คํ˜•์„ฑ์„ ์ด์šฉํ•œ ๊ฐ์ฒด์ง€ํ–ฅ์  ์„ค๊ณ„๋ฅผ ํ†ตํ•ด ํ‘œ์ค€ํ™”๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋†’์€ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›์—๋Š” ์ปฌ๋ ‰์…˜ ๊ทธ๋ฃน์„ ํฌ๊ฒŒ 3๊ฐ€์ง€ ํƒ€์ž…์ด ์กด์žฌํ•œ๋‹ค๊ณ  ์ธ์‹ํ•˜๊ณ  3๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ธํ„ฐํŽ˜์ด์Šค List์™€ Set์˜ ๊ณตํ†ต๋œ ๋ถ€๋ถ„์„ ๋‹ค์‹œ ๋ฝ‘์•„์„œ ์ƒˆ๋กœ์šด ์ธํ„ฐํŽ˜์ด์Šค์ธ Collections๋ฅผ ์ถ”๊ฐ€๋กœ ์ •์˜ํ•˜์˜€์Šต๋‹ˆ๋‹ค.

 

์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›์—๋Š” ์„ธ ๊ฐ€์ง€์˜ ์ธํ„ฐํŽ˜์ด์Šค์— ๋ฟŒ๋ฆฌ๋ฅผ ๋‘๊ณ  ์žˆ๋Š” ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค๋“ค์ด ์กด์žฌํ•˜๋ฉฐ, ๊ฐ™์€ ์ธํ„ฐํŽ˜์ด์Šค์— ๋ฟŒ๋ฆฌ๋ฅผ ๋‘๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋“ค์ด๋ผ๊ณ  ํ•ด๋„ ๋‹ค์–‘ํ•œ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋‹ค์–‘ํ•œ ํผํฌ๋จผ์Šค๋ฅผ ๋ณด์—ฌ์ฃผ๊ธฐ๋„ ํ•˜๋ฉฐ, ๊ผญ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•˜๋Š” ์ƒํ™ฉ์ด ๋ถ„๋ช…ํžˆ ๋‹ฅ์น  ์ˆ˜๋„ ์žˆ์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋ ‡๊ธฐ์— ์ ์ ˆํ•œ ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐœ๋ฐœ์ž๋Š” ๋‹ค์–‘ํ•œ ํด๋ž˜์Šค์˜ ํŠน์ง•์— ๋Œ€ํ•ด ์ „๋ฐ˜์ ์ธ ์ดํ•ด๋ฅผ ํ•˜๊ณ  ์žˆ์–ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.

 

Collection ์ธํ„ฐํŽ˜์ด์Šค

List์™€ Set์˜ ์กฐ์ƒ์ธ Collection ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์— ์ €์žฅ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ณ , ์ถ”๊ฐ€ํ•˜๊ณ  ์‚ญ์ œํ•˜๋Š” ๋“ฑ ์ปฌ๋ ‰์…˜์„ ๋‹ค๋ฃจ๋Š”๋ฐ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋ฉ”์„œ๋“œ๋ฅผ ์ •์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ 'add' ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๊ฐ์ฒด๋ฅผ ์ปฌ๋ ‰์…˜์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, 'isEmpty()' ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ปฌ๋ ‰์…˜์— ๋ฐ์ดํ„ฐ๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

List ์ธํ„ฐํŽ˜์ด์Šค

https://history1994.tistory.com/19

List ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๋ฉด์„œ ์ €์žฅ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋˜๋Š” ์ปฌ๋ ‰์…˜์„ ๊ตฌํ˜„ํ•˜๋Š”๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. List ์ธํ„ฐํŽ˜์ด์Šค์—๋Š” ์ปฌ๋ ‰์…˜ ๋ฐ์ดํ„ฐ๋“ค์„ ์ปจํŠธ๋กคํ•  ์ˆ˜ ์žˆ๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ๋“ค์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค.

 

ArrayList 

ArrayList๋Š” ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›์—์„œ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ์ปฌ๋ ‰์…˜ ํด๋ž˜์Šค์ผ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ArrayList๋Š” List ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐ์ดํ„ฐ์˜ ์ €์žฅ์ˆœ์„œ๊ฐ€ ์œ ์ง€๋˜๊ณ  ์ค‘๋ณต์„ ํ—ˆ์šฉํ•œ๋‹ค๋Š” ๊ณตํ†ต์ ์ธ ํŠน์ง•์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 

 

ArrayList๋Š” Object๋ฐฐ์—ด์„ ์ด์šฉํ•ด์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆœ์ฐจ์ ์œผ๋กœ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, ์ฒซ ๋ฒˆ์งธ๋กœ ์ €์žฅํ•œ ๊ฐ์ฒด๋Š” Object๋ฐฐ์—ด์˜ 0๋ฒˆ์งธ ์œ„์น˜์— ์ €์žฅ๋˜๊ณ  ๊ทธ ๋‹ค์Œ์— ์ €์žฅํ•˜๋Š” ๊ฐ์ฒด๋Š” 1๋ฒˆ์งธ ์œ„์น˜์— ์ –์•„๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฐ ์‹์œผ๋กœ ๊ณ„์† ๋ฐฐ์—ด์— ์ˆœ์„œ๋Œ€๋กœ ์ €์žฅ๋˜๋ฉฐ, ๋ฐฐ์—ด์— ๋” ์ด์ƒ ์ €์žฅํ•  ๊ณต๊ฐ„์ด ์—†์œผ๋ฉด ๋ณด๋‹ค ํฐ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•ด์„œ ๊ธฐ์กด์˜ ๋ฐฐ์—ด์— ์ €์žฅ๋œ ๋‚ด์šฉ์„ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด๋กœ ๋ณต์‚ฌํ•œ ๋‹ค์Œ์— ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

 

์ด๋Ÿฌํ•œ ArrayList์˜ ํŠน์ง• ๋•Œ๋ฌธ์—, ArrayList๋ฅผ ์ฒ˜์Œ ์ƒ์„ฑํ•  ๋•Œ, ์ €์žฅํ•  ์š”์†Œ์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ์‹ค์ œ ์ €์žฅํ•  ๊ฐœ์ˆ˜๋ณด๋‹ค ์•ฝ๊ฐ„ ์—ฌ์œ  ์žˆ๋Š” ํฌ๊ธฐ๋กœ ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ƒ์„ฑํ•  ๋•Œ ์ง€์ •ํ•œ ํฌ๊ธฐ๋ณด๋‹ค ๋” ๋งŽ์€ ๊ฐ์ฒด๋ฅผ ์ €์žฅํ•˜๋ฉด ArrayList์˜ ํฌ๊ธฐ๋ฅผ ํ™•์žฅํ•˜๋Š” ์ž‘์—…์ด ๊ต‰์žฅํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ์œ ๋ฐœํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

LinkedList 

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

 

์ด๋Ÿฌํ•œ ๋ฐฐ์—ด์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•˜๊ธฐ ์œ„ํ•ด LinkedList๋ผ๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๊ฐ€ ๊ณ ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฐฐ์—ด์€ ๋ชจ๋“  ๋ฐ์ดํ„ฐ๊ฐ€ ์—ฐ์†์ ์œผ๋กœ ์กด์žฌํ•˜์ง€๋งŒ LinkedList๋Š” ๋ถˆ์—ฐ์†์ ์œผ๋กœ ์กด์žฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์„œ๋กœ ์—ฐ๊ฒฐํ•œ ํ˜•ํƒœ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ฆ‰ ๊ฐ ๋…ธ๋“œ๊ฐ€ ์ž์‹ ๊ณผ ์—ฐ๊ฒฐ๋œ ๋…ธ๋“œ์˜ ์ฐธ์กฐ์™€ ๋ฐ์ดํ„ฐ๋กœ ๊ตฌ์„ฑ๋˜์–ด์žˆ๋Š” ๊ฒƒ์ด์ฃ . 

 

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

 

ํ•˜์ง€๋งŒ LinkedList์˜ ์ด๋™๋ฐฉํ–ฅ์ด ๋‹จ๋ฐฉํ–ฅ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‹ค์Œ ์š”์†Œ์— ๋Œ€ํ•œ ์ ‘๊ทผ์€ ์‰ฝ์ง€๋งŒ, ์ด์ „ ์š”์†Œ์— ๋Œ€ํ•œ ์ ‘๊ทผ์ด ์–ด๋ ต๋‹ค๋Š” ๋‹จ์ ์ด ์กด์žฌํ•ฉ๋‹ˆ๋‹ค. ์ด ์ ์„ ๋ณด์™„ํ•œ ๊ฒƒ์ด ๋ฐ”๋กœ ๋”๋ธ” LinkedList์ž…๋‹ˆ๋‹ค. ๋”๋ธ” LinkedList๋Š” ๋‹จ์ˆœํžˆ LinkedList์— ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€ํ•˜์—ฌ ๋‹ค์Œ ์š”์†Œ์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ด์ „ ์š”์†Œ์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋„๋ก ํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋ณดํ†ต LinkedList๋ณด๋‹ค ๋”๋ธ” LinkedList๊ฐ€ ๊ฐ ์š”์†Œ์— ๋Œ€ํ•œ ์ ‘๊ทผ๊ณผ ์ด๋™์ด ์‰ฝ๊ธฐ์— ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ํŽธ์ž…๋‹ˆ๋‹ค.

 

์‹ค์ œ๋กœ LinkedList๋Š” ์œ„์—์„œ ์–ธ๊ธ‰ํ•œ LinkedList๊ฐ€ ์•„๋‹Œ ๋”๋ธ” LinkedList๋กœ ๊ตฌํ˜„๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋Š” LinkedList์˜ ๋‹จ์ ์ธ ๋‚ฎ์€ ์ ‘๊ทผ์„ฑ์„ ๋†’์ด๊ธฐ ์œ„ํ•ด ํ•œ๊ฒƒ์ด์ง€์š”.  LinkedList ์—ญ์‹œ List ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ArrayList์™€ ๋‚ด๋ถ€๊ตฌํ˜„๋ฐฉ๋ฒ•๋งŒ ๋‹ค๋ฅผ๋ฟ ์ œ๊ณตํ•˜๋Š” ๋ฉ”์„œ๋“œ์™€ ์ข…๋ฅ˜์˜ ๊ธฐ๋Šฅ์€ ๊ฑฐ์˜ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ArrayList vs LinkedList
์ˆœ์ฐจ์ ์œผ๋กœ ์ถ”๊ฐ€/์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” ArrayList๊ฐ€ LinkedList๋ณด๋‹ค ๋น ๋ฅด๋‹ค.
์ค‘๊ฐ„ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€/์‚ญ์ œํ•˜๋Š” ๊ฒฝ์šฐ์—๋Š” LinkedList๊ฐ€ ArrayList๋ณด๋‹ค ๋น ๋ฅด๋‹ค.

Stack๊ณผ Queue 

์ž๋ฐ”์—์„œ๋Š” ๋˜ํ•œ Stack๊ณผ Queue๋ฅผ ๋”ฐ๋กœ ๊ตฌํ˜„ํ•  ํ•„์š” ์—†์ด ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์Šคํƒ์€ Stackํด๋ž˜์Šค๋กœ ๊ตฌํ˜„ํ•˜์—ฌ ์ œ๊ณตํ•˜๊ณ  ์žˆ์ง€๋งŒ ํ๋Š” Queue์ธํ„ฐํŽ˜์ด์Šค๋กœ๋งŒ ์ •์˜ํ•ด ๋†“์•˜์„ ๋ฟ ๋ณ„๋„์˜ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ๋Œ€์‹  Queue์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ํด๋ž˜์Šค๋“ค์ด ์žˆ์–ด์„œ javadoc์„ ์ฐธ๊ณ ํ•˜์—ฌ ๋‚˜์™€์žˆ๋Š” ํด๋ž˜์Šค๋“ค ์ค‘ ํ•˜๋‚˜๋ฅผ ์„ ํƒํ•ด์„œ ์‚ฌ์šฉํ•ด์•ผ๋งŒ ํ•ฉ๋‹ˆ๋‹ค.