์†Œ๊ฐœ

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

์ด ๋ ˆ์Šจ์—์„œ๋Š” Java Collections Framework ์—์„œ ๊ธฐ๋ณธ ์ฝœ๋ ‰์…˜์˜ ํด๋ž˜์Šค ๊ณ„์ธต ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์•Œ์•„๋ด…๋‹ˆ๋‹ค . ๋˜ํ•œ ํ‘œ์ค€ Java Collections Framework ์˜ ๊ธฐ๋Šฅ์„ ํ™•์žฅํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋Œ€์ฒด ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . ๊ทธ์ค‘ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ๊ฒƒ์€ Guava (Google ์ปฌ๋ ‰์…˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ)์ž…๋‹ˆ๋‹ค.

*๋ชจ๋“  ์ธํ„ฐํŽ˜์ด์Šค์™€ ํด๋ž˜์Šค๊ฐ€ ๋‹ค์ด์–ด๊ทธ๋žจ์— ํ‘œ์‹œ๋˜๋Š” ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค. ์ดํ•ด๋ฅผ ๋•๊ธฐ ์œ„ํ•ด ์ผ๋ถ€๋Š” ์ƒ๋žตํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค

๋‹ค์ด์–ด๊ทธ๋žจ์€ ๋‚˜๋จธ์ง€ ํด๋ž˜์Šค์™€ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ๊ตฌํ˜„๋˜๋Š” ๋‘ ๊ฐ€์ง€ ๊ธฐ๋ณธ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์žˆ์Œ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

๋‹ค์Œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

  1. ์ปฌ๋ ‰์…˜ โ€” ์š”์†Œ(๊ฐ์ฒด) ์ง‘ํ•ฉ์„ ํฌํ•จํ•˜๋Š” ์ผ๋ฐ˜ ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค. ์ด ์ปฌ๋ ‰์…˜์—๋Š” ์‚ฝ์ž…( add , addAll ), ์ œ๊ฑฐ( remove , removeAll , clear ), ๊ฒ€์ƒ‰( contains , containsAll ), ์ปฌ๋ ‰์…˜์ด ๋น„์–ด ์žˆ๋Š”์ง€ ํ™•์ธ( isEmpty ) ๋ฐ ํฌ๊ธฐ ๊ฐ€์ ธ์˜ค๊ธฐ( size ) ์™€ ๊ฐ™์€ ์š”์†Œ ์ž‘์—…์„ ์œ„ํ•œ ๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  2. Map โ€” ํ‚ค-๊ฐ’ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์ปฌ๋ ‰์…˜์ž…๋‹ˆ๋‹ค. ๋˜ํ•œ Map ์˜ ๊ฐ ํ‚ค๋Š” ๊ณ ์œ ํ•ฉ๋‹ˆ๋‹ค. ๋™์ผํ•œ ๊ฐ’์„ ๊ฐ–๋Š” ๋‘ ๊ฐœ์˜ ํ‚ค๋Š” ์—†์Šต๋‹ˆ๋‹ค. ์ด ์ปฌ๋ ‰์…˜์„ ์‚ฌ์ „ ์ด๋ผ๊ณ ๋„ ํ•ฉ๋‹ˆ๋‹ค. ์ง€๋„๋Š” ๋ณ„๋„์˜ ์ธํ„ฐํŽ˜์ด์Šค์ž…๋‹ˆ๋‹ค. Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜์ง€ ์•Š์ง€๋งŒ Java Collections Framework ์˜ ์ผ๋ถ€์ž…๋‹ˆ๋‹ค.

์ง€๋„ ์˜ ์š”์†Œ ์ž‘์—…์— ์œ ์šฉํ•œ ๋ฐฉ๋ฒ• :

  • ์‚ฝ์ž… ( ๋„ฃ๋‹ค , ๋ชจ๋‘ ๋„ฃ๋‹ค )

  • get ( get , keySet , values โ€‹โ€‹, entrySet )

  • ์ œ๊ฑฐํ•˜๋‹ค( ์ œ๊ฑฐํ•˜๋‹ค , ์ง€์šฐ๋‹ค )

  • ๊ฒ€์ƒ‰( containsKey , containsValue )

  • ์ปฌ๋ ‰์…˜์ด ๋น„์–ด ์žˆ๋Š”์ง€ ํ™•์ธ( isEmpty )

  • ํฌ๊ธฐ๋ฅผ ์–ป์œผ์‹ญ์‹œ์˜ค ( ํฌ๊ธฐ )

์ด์ œ ๊ทธ๋“ค ๊ฐ๊ฐ์— ๋Œ€ํ•ด ๋” ์ด์•ผ๊ธฐํ•ฉ์‹œ๋‹ค.

์ปฌ๋ ‰์…˜ ์ธํ„ฐํŽ˜์ด์Šค

Collection ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๋‹จ์ผ ๋ฉ”์†Œ๋“œ์ธ iterator() ๋ฅผ ๊ฐ–๋Š” Iterable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ™•์žฅ ํ•ฉ๋‹ˆ๋‹ค . ์šฐ๋ฆฌ์—๊ฒŒ ์ด๊ฒƒ์€ Iterable์„ ์ƒ์†ํ•˜๋Š” ๋ชจ๋“  ์ปฌ๋ ‰์…˜์ด ๋ฐ˜๋ณต์ž๋ฅผ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ์Œ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

๋ฐ˜๋ณต์ž๋Š” ํŠน์ • ๊ตฌํ˜„์— ๊ด€๊ณ„์—†์ด ์ปฌ๋ ‰์…˜์˜ ์š”์†Œ์— ์•ก์„ธ์Šคํ•˜๋Š” ๋ฐ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํŠน์ˆ˜ ๊ฐœ์ฒด์ž…๋‹ˆ๋‹ค.

๊ทธ๋ฆผ์€ List , Queue ๋ฐ Set ์˜ 3๊ฐœ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ Collection ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•จ์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค . ์ด์ œ ๊ฐ๊ฐ์— ๋Œ€ํ•ด ๊ฐ„๋‹จํžˆ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๋ชฉ๋ก์€ ์ค‘๋ณต ๊ฐ’์„ ํ—ˆ์šฉํ•˜๋Š” ์ •๋ ฌ๋œ ๋ชจ์Œ์ž…๋‹ˆ๋‹ค. ๋ชฉ๋ก ์˜ ํŠน์ • ๊ธฐ๋Šฅ์€ํ•ด๋‹น ์š”์†Œ์— ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ง€๊ณ  ๋ฒˆํ˜ธ(์ธ๋ฑ์Šค)๋กœ ์•ก์„ธ์Šคํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

Queue ๋Š” ํ์— ์ถ”๊ฐ€๋œ ์ˆœ์„œ๋Œ€๋กœ ์š”์†Œ๋ฅผ ์ €์žฅํ•ฉ๋‹ˆ๋‹ค.

๋ชฉ๋ก๊ณผ ๋‹ฌ๋ฆฌ Set์€ ๋ฐ˜๋ณต๋˜๋Š” ์š”์†Œ๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š” ์ •๋ ฌ๋˜์ง€ ์•Š์€ ์ปฌ๋ ‰์…˜์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. Set ์ธํ„ฐํŽ˜์ด์Šค ๋Š” ์ˆ˜ํ•™์  ์ง‘ํ•ฉ ์˜ ๊ฐœ๋…์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค .

์ง€๋„ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๊ตฌํ˜„

๋งต ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ๊ณ ์œ ํ•œ ํ‚ค์™€ ๊ฐ’ ์‚ฌ์ด์˜ ๋งคํ•‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค .

interface Map<K, V>

์—ฌ๊ธฐ์„œ K ๋Š” ํ‚ค์˜ ์œ ํ˜•์ด๊ณ  V ๋Š” ์ €์žฅ๋œ ๊ฐ’์˜ ์œ ํ˜•์ž…๋‹ˆ๋‹ค.

ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Map ์—์„œ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”์ถœํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค . Map ์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ํ‚ค์™€ ๊ฐ’์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Map ์˜ ๋ช‡ ๊ฐ€์ง€ ๊ตฌํ˜„์„ ์‚ดํŽด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค .

  1. HashMap์€ ํ•ด์‹œ ํ…Œ์ด๋ธ”์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๋Š” Map ์˜ ๊ตฌํ˜„์ž…๋‹ˆ๋‹คnull ์„ ํฌํ•จํ•˜์—ฌ ๋ชจ๋“  ์œ ํ˜•์˜ ํ‚ค์™€ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์š”์†Œ์˜ ์ˆœ์„œ๋Š” ๋ณด์žฅ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

  2. LinkedHashMap ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์š”์†Œ์˜ ์—ฐ๊ฒฐ๋œ ๋ชฉ๋ก์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์š”์†Œ๋Š” ์ถ”๊ฐ€๋œ ์ˆœ์„œ๋Œ€๋กœ ๋ชฉ๋ก์— ๋‚˜ํƒ€๋‚ฉ๋‹ˆ๋‹ค.

  3. TreeMap์€ ( NavigableMap ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด) SortedMap ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ตฌ์กฐ์˜ ์š”์†Œ๋Š” ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค(์ƒˆ ์š”์†Œ๊ฐ€ ์ถ”๊ฐ€๋˜๋ฉด ์ปฌ๋ ‰์…˜์ด ์ž๋™์œผ๋กœ ์ •๋ ฌ๋จ). TreeMap์€ ๋น ๋ฅธ ๊ฒ€์ƒ‰์œผ๋กœ ๋งŽ์€ ์–‘์˜ ์ •๋ ฌ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋ฐ ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์˜ค๋ž˜๋œ ์ปฌ๋ ‰์…˜:

Java์—๋Š” ์ด์ „ ๋ฒ„์ „์˜ ์˜ค๋ž˜๋œ ์ปฌ๋ ‰์…˜์ด ์žˆ์Šต๋‹ˆ๋‹ค(์ด์ „ ๋ฒ„์ „๊ณผ์˜ ํ˜ธํ™˜์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด). ์ด๋Ÿฌํ•œ ์ด์ „ ์ปฌ๋ ‰์…˜์€ ์ƒˆ ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ ๋ฉ๋‹ˆ๋‹ค.

  • Enumeration โ€” Iterator ์ธํ„ฐํŽ˜์ด์Šค์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • Vector โ€” ์ •๋ ฌ๋œ ์š”์†Œ ๋ชฉ๋ก์ด๋ฉฐ ArrayList ํด๋ž˜์Šค์™€ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

  • ์Šคํƒ โ€” ์ฑ… ๋”๋ฏธ์™€ ์ƒํ˜ธ ์ž‘์šฉํ•˜๋Š” ๋ฐฉ์‹๊ณผ ๊ฐ™์€ ์š”์†Œ๋ฅผ ์ €์žฅํ•˜๊ณ  ์กฐ์ž‘ํ•˜๋Š” ์Šคํƒ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ๊ตฌํ˜„์ž…๋‹ˆ๋‹ค. ์Šคํƒ์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€( push )ํ•˜๊ณ  ์ œ๊ฑฐ( pop )ํ•˜๋Š” ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ์‚ฌ์ „ โ€” Map ์ธํ„ฐํŽ˜์ด์Šค ์™€ ์œ ์‚ฌํ•˜์ง€๋งŒ ์ถ”์ƒ ํด๋ž˜์Šค์ž…๋‹ˆ๋‹ค.

  • Hashtable โ€” HashMap ๊ณผ ์œ ์‚ฌํ•ฉ๋‹ˆ๋‹ค .

Collections Framework ์— ๋Œ€ํ•œ ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์ด ๋ฌธ์„œ๋ฅผ ์ฐธ์กฐํ•˜์‹ญ์‹œ์˜ค .