๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์นดํ…Œ๊ณ ๋ฆฌ ์—†์Œ

์ž๋ฐ” HashMap ์‚ฌ์šฉ๋ฒ• & ์˜ˆ์ œ ์ด์ •๋ฆฌ

by 5566 2023. 11. 14.

1. HashMap์ด๋ž€?

HashMap์€ ์ž๋ฐ”์˜ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณต๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜๋กœ, key-value ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. key์™€ value๋Š” ๋ชจ๋‘ ๊ฐ์ฒด๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉฐ, HashMap์€ key๋ฅผ ํ†ตํ•ด value์— ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

2. HashMap ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ

HashMap์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™” ๊ณผ์ •์„ ๊ฑฐ์ณ์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ HashMap์„ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

HashMap<KeyType, ValueType> hashMap = new HashMap<>();

์—ฌ๊ธฐ์„œ KeyType์€ key์˜ ์ž๋ฃŒํ˜•์„, ValueType์€ value์˜ ์ž๋ฃŒํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

3. HashMap์— ์š”์†Œ ์ถ”๊ฐ€ํ•˜๊ธฐ

HashMap์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ๋•Œ๋Š” put() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. put() ๋ฉ”์†Œ๋“œ๋Š” key์™€ value๋ฅผ ์ธ์ž๋กœ ๋ฐ›์œผ๋ฉฐ, ํ•ด๋‹น key-value ์Œ์„ HashMap์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

hashMap.put(key, value);

4. HashMap์—์„œ ์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ

HashMap์—์„œ ํŠน์ • key์— ํ•ด๋‹นํ•˜๋Š” value๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” get() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. get() ๋ฉ”์†Œ๋“œ๋Š” key๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ณ , ํ•ด๋‹น key์— ๋Œ€์‘ํ•˜๋Š” value๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ get() ๋ฉ”์†Œ๋“œ์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

ValueType value = hashMap.get(key);

5. HashMap ์š”์†Œ ์‚ญ์ œํ•˜๊ธฐ

HashMap์—์„œ ํŠน์ • key์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” remove() ๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. remove() ๋ฉ”์†Œ๋“œ๋Š” key๋ฅผ ์ธ์ž๋กœ ๋ฐ›๊ณ , ํ•ด๋‹น key์— ๋Œ€์‘ํ•˜๋Š” ์š”์†Œ๋ฅผ HashMap์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ remove() ๋ฉ”์†Œ๋“œ์˜ ์‚ฌ์šฉ ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

hashMap.remove(key);

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

1. HashMap์ด๋ž€?

HashMap์€ ์ž๋ฐ”์˜ ์ปฌ๋ ‰์…˜ ํ”„๋ ˆ์ž„์›Œํฌ์—์„œ ์ œ๊ณต๋˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค. HashMap์€ key-value ์Œ์œผ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์ž๋ฃŒ๊ตฌ์กฐ๋กœ, ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•˜๋Š” ๋ฐ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

HashMap์€ key์™€ value์˜ ์Œ์œผ๋กœ ๊ตฌ์„ฑ๋˜์–ด ์žˆ์œผ๋ฉฐ, ๊ฐ key์™€ value๋Š” ๊ฐ์ฒด(Object) ํƒ€์ž…์œผ๋กœ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ํ•˜๋‚˜์˜ HashMap์—๋Š” ์ค‘๋ณต๋œ key๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š์œผ๋ฉฐ, ํ•˜๋‚˜์˜ key์— ์—ฌ๋Ÿฌ ๊ฐœ์˜ value๋ฅผ ๋งคํ•‘ํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๋™์ผํ•œ value๋ฅผ ๊ฐ€์ง„ ์—ฌ๋Ÿฌ ๊ฐœ์˜ key๋Š” ํ—ˆ์šฉ๋ฉ๋‹ˆ๋‹ค.

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

๋˜ํ•œ, HashMap์€ ์ˆœ์„œ๋ฅผ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ฆ‰, ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•œ ์ˆœ์„œ๋Œ€๋กœ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ๋ณด์žฅํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

HashMap์€ ํŠนํžˆ ๋Œ€๋Ÿ‰์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ด€๋ฆฌํ•  ๋•Œ ์œ ์šฉํ•˜๋ฉฐ, ํšจ์œจ์ ์ธ ๊ฒ€์ƒ‰์„ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ์ดํ„ฐ์˜ ์ถ”๊ฐ€, ์‚ญ์ œ๋ฅผ ์œ„ํ•ด์„œ๋Š” ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ๋ฅผ ํƒ์ƒ‰ํ•ด์•ผ ํ•˜๋ฏ€๋กœ, ๊ฒ€์ƒ‰๋ณด๋‹ค๋Š” ๋น„ํšจ์œจ์ ์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HashMap์˜ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ O(1)๋กœ, ์ƒ์ˆ˜ ์‹œ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹จ, ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ๊ฒฝ์šฐ(๋‘ ๊ฐœ ์ด์ƒ์˜ key๊ฐ€ ๊ฐ™์€ ๋ฒ„ํ‚ท์— ๋งคํ•‘๋  ๊ฒฝ์šฐ) ์„ฑ๋Šฅ์ด ์ €ํ•˜๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

2. HashMap ์„ ์–ธ๊ณผ ์ดˆ๊ธฐํ™”ํ•˜๊ธฐ

HashMap์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € ํ•ด๋‹น ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. HashMap ๊ฐ์ฒด๋ฅผ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

HashMap<KeyType, ValueType> hashMap = new HashMap<>();

์—ฌ๊ธฐ์„œ KeyType์€ key์˜ ์ž๋ฃŒํ˜•์„, ValueType์€ value์˜ ์ž๋ฃŒํ˜•์„ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ ์›ํ•˜๋Š” ์ž๋ฃŒํ˜•์— ๋งž๊ฒŒ KeyType๊ณผ ValueType์„ ์ง€์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, key์™€ value๊ฐ€ ๋ชจ๋‘ String์ธ ๊ฒฝ์šฐ์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์„ ์–ธ ๋ฐ ์ดˆ๊ธฐํ™”ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HashMap<String, String> hashMap = new HashMap<>();

๊ธฐ๋ณธ์ ์œผ๋กœ HashMap์€ ์ œ๋„ค๋ฆญ(Generic)์œผ๋กœ ์„ ์–ธ๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋‹ค์–‘ํ•œ ์ž๋ฃŒํ˜•์— ๋Œ€ํ•ด ์œ ์—ฐํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HashMap์„ ์„ ์–ธํ•˜๊ณ  ์ดˆ๊ธฐํ™”ํ•œ ํ›„์—๋Š” key-value ์Œ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์„ ์–ธ๋œ HashMap ๊ฐ์ฒด๋Š” ์ดํ›„์— ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค.

3. HashMap์— ์š”์†Œ ์ถ”๊ฐ€ํ•˜๊ธฐ

HashMap์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” put() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ์ง€์ •๋œ key์™€ value๋ฅผ HashMap์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ HashMap์— ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

hashMap.put(key, value);

์—ฌ๊ธฐ์„œ key๋Š” ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ์š”์†Œ์˜ key์ด๊ณ , value๋Š” ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ์š”์†Œ์˜ value์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, key๊ฐ€ "name"์ด๊ณ  value๊ฐ€ "John"์ธ ์š”์†Œ๋ฅผ HashMap์— ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

hashMap.put("name", "John");

HashMap์€ key์— ๋Œ€ํ•œ ์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ์ด๋ฏธ ์กด์žฌํ•˜๋Š” key๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๋ ค๊ณ  ํ•œ๋‹ค๋ฉด ๊ธฐ์กด์˜ value๋ฅผ ๋ฎ์–ด์”Œ์›๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, ์œ„์˜ ์˜ˆ์‹œ์—์„œ key๊ฐ€ "name"์ธ ์š”์†Œ๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด, ํ•ด๋‹น ์š”์†Œ์˜ value๋Š” "John"์œผ๋กœ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

๋˜ํ•œ, HashMap์€ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์š”์†Œ๋ฅผ ๋™์‹œ์— ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, put() ๋ฉ”์„œ๋“œ๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ํ˜ธ์ถœํ•˜์—ฌ ํ•ด๋‹น ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

hashMap.put("age", "25");
hashMap.put("country", "USA");

์œ„์˜ ์ฝ”๋“œ๋Š” "age"์™€ "country"๋ผ๋Š” key๋ฅผ ๊ฐ€์ง„ ์š”์†Œ๋ฅผ HashMap์— ์ถ”๊ฐ€ํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค.

HashMap์€ key์™€ value์˜ ํƒ€์ž…์ด ๊ฐ์ฒด(Object)์—ฌ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์—, ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์„ ์ถ”๊ฐ€ํ•  ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ์ž๋ฃŒํ˜•์„ ๊ฐ์ฒด๋กœ ๋ฐ”๊ฟ”์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์˜ Wrapper ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด, int ์ž๋ฃŒํ˜•์„ ์ถ”๊ฐ€ํ•˜๋ ค๋Š” ๊ฒฝ์šฐ ์•„๋ž˜์™€ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

hashMap.put("age", Integer.valueOf(25));

์œ„์˜ ์ฝ”๋“œ์—์„œ Integer.valueOf(25)๋Š” int ์ž๋ฃŒํ˜•์ธ 25๋ฅผ Integer ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ์—ญํ• ์„ ํ•ฉ๋‹ˆ๋‹ค.

4. HashMap์—์„œ ์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ

HashMap์—์„œ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” get() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ์ง€์ •๋œ key์— ๋Œ€์‘ํ•˜๋Š” value๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ HashMap์—์„œ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

ValueType value = hashMap.get(key);

์—ฌ๊ธฐ์„œ key๋Š” ๊ฐ€์ ธ์˜ค๋ ค๋Š” ์š”์†Œ์˜ key์ด๊ณ , value๋Š” ๋ฐ˜ํ™˜๋œ ์š”์†Œ์˜ value๋ฅผ ์ €์žฅํ•  ๋ณ€์ˆ˜์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, key๊ฐ€ "name"์ธ ์š”์†Œ์˜ value๋ฅผ ๊ฐ€์ ธ์˜ค๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

String name = hashMap.get("name");

์œ„์˜ ์˜ˆ์‹œ์—์„œ name ๋ณ€์ˆ˜์—๋Š” key๊ฐ€ "name"์ธ ์š”์†Œ์˜ value๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ HashMap์— ํ•ด๋‹น key๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, null์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

HashMap์—์„œ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ ์ฃผ์˜ํ•ด์•ผ ํ•  ์ ์€ key์˜ ์ค‘๋ณต์ด ํ—ˆ์šฉ๋˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์—, ๋™์ผํ•œ key์— ๋Œ€์‘ํ•˜๋Š” value๋Š” ํ•˜๋‚˜๋ฐ–์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ get() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ key์— ๋Œ€์‘ํ•˜๋Š” value๋ฅผ ๋ฐ›์•„์˜ฌ ๋•Œ์—๋Š”, ํ•ด๋‹น key๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ๋จผ์ € ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. containsKey() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น key๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

if (hashMap.containsKey(key)) {
    ValueType value = hashMap.get(key);
    // value ์‚ฌ์šฉํ•˜๊ธฐ
} else {
    // key๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ
}

์œ„์˜ ์ฝ”๋“œ์—์„œ if-else ๋ฌธ์€ HashMap์— key๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹น key์— ๋Œ€์‘ํ•˜๋Š” value๋ฅผ ๊ฐ€์ ธ์˜ค๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. key๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด else ๋ธ”๋ก์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HashMap์—์„œ ์š”์†Œ๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ๋Š” key์˜ ํƒ€์ž…๊ณผ ์ผ์น˜ํ•˜๋Š” ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ฅผํ…Œ๋ฉด, String ํƒ€์ž…์˜ key์— ๋Œ€์‘ํ•˜๋Š” value๋ฅผ ๊ฐ€์ ธ์˜ฌ ๋•Œ์—๋Š” String ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

5. HashMap ์š”์†Œ ์‚ญ์ œํ•˜๊ธฐ

HashMap์—์„œ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” remove() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ์ง€์ •๋œ key์— ํ•ด๋‹นํ•˜๋Š” ์š”์†Œ๋ฅผ HashMap์—์„œ ์ œ๊ฑฐํ•ฉ๋‹ˆ๋‹ค. ๋‹ค์Œ์€ HashMap์—์„œ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ž์„ธํžˆ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

ValueType value = hashMap.remove(key);

์—ฌ๊ธฐ์„œ key๋Š” ์‚ญ์ œํ•˜๋ ค๋Š” ์š”์†Œ์˜ key์ด๊ณ , value๋Š” ์‚ญ์ œ๋œ ์š”์†Œ์˜ value๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด, key๊ฐ€ "name"์ธ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•˜๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

String name = hashMap.remove("name");

์œ„์˜ ์˜ˆ์‹œ์—์„œ name ๋ณ€์ˆ˜์—๋Š” ์‚ญ์ œ๋œ ์š”์†Œ์˜ value๊ฐ€ ์ €์žฅ๋ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ HashMap์— ํ•ด๋‹น key๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, null์ด ๋ฐ˜ํ™˜๋ฉ๋‹ˆ๋‹ค.

HashMap์—์„œ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ์—๋Š” ์‚ญ์ œํ•˜๋ ค๋Š” key๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ๋จผ์ € ํ™•์ธํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. containsKey() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹น key๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

if (hashMap.containsKey(key)) {
    ValueType value = hashMap.remove(key);
    // value ์‚ฌ์šฉํ•˜๊ธฐ
} else {
    // key๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ ์ฒ˜๋ฆฌํ•˜๊ธฐ
}

์œ„์˜ ์ฝ”๋“œ์—์„œ if-else ๋ฌธ์€ HashMap์— key๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ์กด์žฌํ•œ๋‹ค๋ฉด ํ•ด๋‹น key์— ๋Œ€์‘ํ•˜๋Š” value๋ฅผ ์ œ๊ฑฐํ•˜๋Š” ์˜ˆ์‹œ์ž…๋‹ˆ๋‹ค. key๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด else ๋ธ”๋ก์—์„œ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

HashMap์—์„œ ์š”์†Œ๋ฅผ ์‚ญ์ œํ•  ๋•Œ๋Š” key์˜ ํƒ€์ž…๊ณผ ์ผ์น˜ํ•˜๋Š” ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. ์ด๋ฅผํ…Œ๋ฉด, String ํƒ€์ž…์˜ key์— ํ•ด๋‹นํ•˜๋Š” value๋ฅผ ์‚ญ์ œํ•  ๋•Œ์—๋Š” String ํƒ€์ž…์˜ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

๋Œ“๊ธ€