JavaRush /Java Blog /Random-KO /๋ถ๋งˆํฌ: ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๊ด€ํ•œ ๊ธฐ์‚ฌ ๋ชจ์Œ - ๊ฐ•์˜ ๋ฐ ์ธํ„ฐ๋ทฐ ์งˆ๋ฌธ

๋ถ๋งˆํฌ: ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๊ด€ํ•œ ๊ธฐ์‚ฌ ๋ชจ์Œ - ๊ฐ•์˜ ๋ฐ ์ธํ„ฐ๋ทฐ ์งˆ๋ฌธ

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

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๊ด€ํ•œ ์ž๋ฃŒ

๊ธฐ์‚ฌ ๋ฐ ๊ฐ•์˜

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ - ์Šคํƒ ๋ฐ ํ

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

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ: Java์˜ ํ”ผ๋ผ๋ฏธ๋“œ(์ด์ง„ ํž™)

๊ฐ•์˜์—์„œ๋Š” ํ”ผ๋ผ๋ฏธ๋“œ(ํž™ ๋ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ ํž™์ด๋ผ๊ณ ๋„ ํ•จ)์™€ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค. ์ผ๋ฐ˜์ ์œผ๋กœ ์ด๋Ÿฌํ•œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ๋‹ค์–‘ํ•œ ์ž‘์—…์˜ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๋ฐ ํ•„์š”ํ•œ ๋‹ค์–‘ํ•œ ์Šค์ผ€์ค„๋Ÿฌ ๋ฐ ๊ธฐํƒ€ ๊ตฌ์กฐ์— ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋ก  ์™ธ์—๋„ ์ด ๊ธฐ์‚ฌ์—์„œ๋Š” Java๋กœ ํ”ผ๋ผ๋ฏธ๋“œ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ: Java์˜ ์ด์ง„ ํŠธ๋ฆฌ

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์— ๋Œ€ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ค‘์—์„œ ์ด์ง„ ๊ฒ€์ƒ‰ ํŠธ๋ฆฌ๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์€ ํ™•์‹คํžˆ ๊ฐ€์น˜๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ•์˜์—์„œ๋Š” ๊ตฌ์กฐ ์ž์ฒด์˜ ํŠน์ง•๊ณผ ์žฅ์ ์„ ์‚ดํŽด๋ณด๊ณ  Java์—์„œ ์ด์ง„ ํŠธ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ณด์—ฌ์ค๋‹ˆ๋‹ค.

์ง€๋„ ์ธํ„ฐํŽ˜์ด์Šค์— ๊ด€ํ•ด ๊ฐ€์žฅ ๋งŽ์ด ๋ฌป๋Š” ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€

๋งต์€ ํ‚ค-๊ฐ’ ์Œ ์ง‘ํ•ฉ์„ ํฌํ•จํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๊ทธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋Š” ์‚ฌ์ „๊ณผ ์œ ์‚ฌํ•˜๋ฏ€๋กœ ์ข…์ข… ๊ทธ๋ ‡๊ฒŒ ๋ถˆ๋ฆฝ๋‹ˆ๋‹ค. ๋™์‹œ์— Map์€ ์ธํ„ฐํŽ˜์ด์Šค์ด๋ฉฐ ํ‘œ์ค€ jdk์—๋Š” Hashmap , LinkedHashMap , Hashtable , TreeMap๊ณผ ๊ฐ™์€ ์ฃผ์š” ๊ตฌํ˜„์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค . ์ด ๊ธฐ์‚ฌ๋Š” Map ์— ๊ด€ํ•œ ๊ฐ€์žฅ ์ธ๊ธฐ ์žˆ๋Š” ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋‹ต๋ณ€์ž…๋‹ˆ๋‹ค .

Java์˜ ๋ฐฐ์—ด

์ด ์ƒ์„ธํ•œ "๋ฐฑ๊ณผ์‚ฌ์ „"์€ ๋ฐฐ์—ด์ด ๋ฌด์—‡์ธ์ง€, ๋ฐฐ์—ด์„ ์„ ์–ธํ•˜๊ณ  ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•, ๋ฐฐ์—ด์˜ ๊ธธ์ด, ๋ฐฐ์—ด์„ ์ดˆ๊ธฐํ™”ํ•˜๊ณ  ๋ฐฐ์—ด์— ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ• ๋“ฑ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฐฐ์—ด์— ๋Œ€ํ•ด ์•Œ์•„์•ผ ํ•  ๋ชจ๋“  ๊ฒƒ์„ ์•Œ๋ ค์ค๋‹ˆ๋‹ค. ํ™”๋ฉด.

Java์˜ HashMap - ์–ด๋–ค ์ข…๋ฅ˜์˜ ๋งต์ธ๊ฐ€์š”?

์ด๋ฒˆ ๊ฐ•์˜์—์„œ๋Š” Map ๊ณผ ๋‹ค๋ฅธ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์˜ ์ฐจ์ด์ ์— ๋Œ€ํ•ด ๋ฐฐ์šฐ๊ณ  ์‹ค์ œ ์˜ˆ์ œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ Java์—์„œ HashMap์„ ์ƒ์„ฑ ํ•˜๊ณ  ํด๋ž˜์Šค๋กœ ์ž‘์—…ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์‚ดํŽด๋ด…๋‹ˆ๋‹ค .

ํŠธ๋ฆฌ๋งต์˜ ํŠน์ง•

์ง€๋„ ์ธํ„ฐํŽ˜์ด์Šค ์™€ ์‘์šฉ ์˜ต์…˜ ์— ์ด๋ฏธ ์ต์ˆ™ํ•œ ์‚ฌ๋žŒ๋“ค์„ ์œ„ํ•œ ๊ฐ•์˜์ž…๋‹ˆ๋‹ค . TreeMap์˜ ๊ตฌํ˜„ ๊ธฐ๋Šฅ์— ๋Œ€ํ•ด ์„ค๋ช…ํ•˜๊ณ  , ๋ณด๋‹ค ๊ตฌ์ฒด์ ์œผ๋กœ HashMap ๊ณผ ์–ด๋–ป๊ฒŒ ๋‹ค๋ฅธ์ง€ , ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์— ๋Œ€ํ•ด ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์˜ ๋ฐฐ์—ด๋ฆฌ์ŠคํŠธ

๊ฐœ๋ฐœํ•  ๋•Œ ์–ด๋–ค ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์ด ํ•„์š”ํ• ์ง€ ์˜ˆ์ธกํ•˜๊ธฐ ์–ด๋ ค์šด ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰๋˜๋Š” ๋™์•ˆ ๋™์  ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๊ธฐ๋Šฅ์€ ๋ชจ๋“  ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. Java์—๋Š” ์ด๋Ÿฌํ•œ ๋ชฉ์ ์„ ์œ„ํ•œ ArrayList ํด๋ž˜์Šค๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค . ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€ ์ด์•ผ๊ธฐํ•  ๋‚ด์šฉ์ž…๋‹ˆ๋‹ค.

๋งํฌ๋“œ๋ฆฌ์ŠคํŠธ

LinkedList ์—์„œ ์š”์†Œ๋Š” ์‹ค์ œ๋กœ ์ฒด์ธ์˜ ๋งํฌ์ž…๋‹ˆ๋‹ค. ๊ฐ ์š”์†Œ์—๋Š” ์ €์žฅ๋˜๋Š” ๋ฐ์ดํ„ฐ ์™ธ์—๋„ ์ด์ „ ์š”์†Œ์™€ ๋‹ค์Œ ์š”์†Œ์— ๋Œ€ํ•œ ๋งํฌ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋น„๋””์˜ค

Java์˜ ์ ‘๋‘์‚ฌ ํŠธ๋ฆฌ

์ ‘๋‘์‚ฌ ํŠธ๋ฆฌ๋Š” ํ‚ค๊ฐ€ ๋ฌธ์ž์—ด์ธ ์—ฐ๊ด€ ๋ฐฐ์—ด์„ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. Sergey Arkhipov์˜ ๋น„๋””์˜ค์—์„œ๋Š” Java ๊ฐœ๋ฐœ์—์„œ ์ ‘๋‘์‚ฌ ํŠธ๋ฆฌ๊ฐ€ ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ๋ฒ•, ํŠธ๋ฆฌ๋ฅผ ํŒŒ์ผ์— ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•, ๋‹ค์‹œ ๋กœ๋“œํ•˜๋Š” ๋ฐฉ๋ฒ• ๋ฐ ๊ธฐํƒ€ ์œ ์šฉํ•œ ์ •๋ณด๋ฅผ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฐ€์žฅ ์ผ๋ฐ˜์ ์ธ ์ธํ„ฐ๋ทฐ ์งˆ๋ฌธ์€ ์ปฌ๋ ‰์…˜, hashCode ๋ฐ ๊ฐ™์Œ์ž…๋‹ˆ๋‹ค.

HashMap , TreeMap ๋ฐ LinkedHashMap ํด๋ž˜์Šค ์—†์ด Java์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๋ฅผ ์—ฐ๊ตฌํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค . ์ด ๋™์˜์ƒ์—์„œ Java ๋ฐ Kotlin ๊ฐœ๋ฐœ์ž Ilya Niksan์€ ์ด๋Ÿฌํ•œ ํด๋ž˜์Šค, ํ•ด๋‹น ์†์„ฑ ๋ฐ ์‚ฌ์šฉ ์‚ฌ๋ก€ ๊ฐ„์˜ ์ฐจ์ด์ ์„ ์ž์„ธํžˆ ๋ถ„์„ํ–ˆ์Šต๋‹ˆ๋‹ค.

'๋ฉด์ ‘ ์งˆ๋ฌธ๊ณผ ๋‹ต๋ณ€'์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ

์ธํ„ฐ๋ทฐ์—์„œ ๋ฌผ์–ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ: Java์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ. 1 ๋ถ€

์ธํ„ฐ๋ทฐ์˜ ๊ธฐ๋ณธ ์ฃผ์ œ ์ค‘ ํ•˜๋‚˜๋Š” Java์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ์ด ๋ฌธ์„œ์—๋Š” ๋ฐฐ์—ด ๋ฐ ์ปฌ๋ ‰์…˜ ๊ณ„์ธต ๊ตฌ์กฐ์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ํฌํ•จํ•˜์—ฌ ์ธํ„ฐ๋ทฐ์—์„œ ์ด ์ฃผ์ œ์— ๊ด€ํ•ด ์งˆ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์งˆ๋ฌธ ๋ชฉ๋ก์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

์ธํ„ฐ๋ทฐ์—์„œ ๋ฌผ์–ด๋ณผ ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ: Java์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ. 2 ๋ถ€

๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ฃผ์ œ์— ๊ด€ํ•ด ์งˆ๋ฌธํ•  ์ˆ˜ ์žˆ๋Š” ์งˆ๋ฌธ์— ๋Œ€ํ•œ ์ด์ „ ํ…์ŠคํŠธ์— ์ด์–ด ์ €์ž๋Š” Map , List , HashMap ๋ฐ ๊ธฐํƒ€ ์ฃผ์ œ๋ฅผ ๊ฒ€ํ† ํ•ฉ๋‹ˆ๋‹ค.

๋ณด๋„ˆ์Šค

์„œํ‰: โ€œJava ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜โ€, Robert Laforet

์ด ์ฑ…์€ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์™€ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์—ฐ๊ตฌํ•˜๊ณ  ์‚ฌ์šฉํ•˜๋Š” ๋ฐ ์ „๋…ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ๊ฐ€ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์—์„œ ๊ตฌ์„ฑ๋˜๋Š” ๋ฐฉ์‹์„ ๊ฒฐ์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์ด๋Ÿฌํ•œ ๊ตฌ์กฐ์—์„œ ๋‹ค์–‘ํ•œ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.
์‹œ๋ฆฌ์ฆˆ์˜ ๊ธฐํƒ€ ์ž๋ฃŒ:
์ฝ”๋ฉ˜ํŠธ
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION