Community

๐Ÿ•Š๏ธ HashMap์„ ์ž˜ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

HashMap์„ Map>์œผ๋กœ ์ดˆ๊ธฐํ™”ํ•˜๊ณ , ์ƒˆ๋กœ์šด ๊ฐ’ (country, city)์„ ์‚ฝ์ž…ํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค. ์—ฌ๋Ÿฌ ๋ฐฉ๋ฒ•์ด ์žˆ๊ฒ ์ง€๋งŒ, getOrDefault() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. map.put(country, map.getOrDefault(country, new ArrayList()); map.get(country).add(city); ์ด ์ฝ”๋“œ๋ฅผ ๋” ์งง๊ฒŒ ๊ตฌํ˜„ํ•  ์ˆ˜๋Š” ์—†์„๊นŒ์š”? ํ•œ ์ค„๋กœ์š”. computeIfAbsent()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. map.computeIfAbsent(country, k -> new ArrayList()).add(city); map์„ ์‚ฌ์šฉํ•  ๋•Œ๋Š” ํ‚ค๊ฐ€ ์ด๋ฏธ map์— ์žˆ๋Š”์ง€ ์—ฌ๋ถ€๋ฅผ ํŒŒ์•…ํ•˜๋Š” ๊ฒƒ์ด ๋งค์šฐ ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค. computeIfAbsent() ๋ฉ”์„œ๋“œ๋ฅผ ๋” ์‚ดํŽด๋ด…์‹œ๋‹ค. V computeIfAbsent(K key, mappingFunction ํ‚ค์™€ ๋งคํ•‘ ๋ฉ”์„œ๋“œ, ๋‘ ๊ฐœ์˜ ์ธ์ˆ˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ‚ค๊ฐ€ map์— ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ์ง€์ •๋œ ํ‚ค์— ๋Œ€ํ•œ ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ํ‚ค๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ, ๋ฉ”์„œ๋“œ๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๊ณ  ํ‚ค์™€ ์—ฐ๊ด€๋œ ๊ธฐ์กด ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๋˜ ๋‹ค๋ฅธ ์œ ์‚ฌํ•œ ๋ฉ”์„œ๋“œ๋Š” putIfAbsent(K key, V value) ์ž…๋‹ˆ๋‹ค. ์—ญ์‹œ๋‚˜ ํ‚ค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์— ์ง€์ •๋œ ๊ฐ’์„ map์— ์‚ฝ์ž…ํ•ฉ๋‹ˆ๋‹ค. computeIfAbsent์™€์˜ ์ฐจ์ด์ ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. - ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ’์ด ๊ณ„์‚ฐ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. - ํ‚ค๊ฐ€ ์—†์œผ๋ฉด ์ƒˆ ํ‚ค-๊ฐ’ ์Œ์ด ์‚ฝ์ž…๋˜๊ณ  ๋ฉ”์„œ๋“œ๋Š” null์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ž˜์„œ, ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•ฉ๋‹ˆ๋‹ค. map.putIfAbsent(country, new ArrayList()).add(city); ๋งŒ์•ฝ country๊ฐ€ ์ด๋ฏธ ์กด์žฌํ•œ๋‹ค๋ฉด, ๋ฉ”์„œ๋“œ๋Š” ์•„๋ฌด๊ฒƒ๋„ ํ•˜์ง€ ์•Š๊ณ  ํ•ด๋‹น ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ country๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, null์„ ๋ฐ˜ํ™˜ํ•˜๋ฏ€๋กœ NullPointerException์ด ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์•Œ๋ฆผ

์•Œ๋ฆผ์ด ์—†์Šต๋‹ˆ๋‹ค