Java์˜ Map์€ ํ‚ค-๊ฐ’ ์Œ์„ ๊ด€๋ฆฌํ•˜๋Š” ๋Œ€ํ‘œ์ ์ธ ์ž๋ฃŒ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.
์ด ๊ฒŒ์‹œ๋ฌผ์—์„œ๋Š” Map์„ ๋‹ค๋ฃจ๋Š” ์„ธ ๊ฐ€์ง€ ์ฃผ์š” ๋ฉ”์„œ๋“œ์ธ keySet(), entrySet(), ๊ทธ๋ฆฌ๊ณ  Map.entry()์˜ ์‚ฌ์šฉ๋ฒ•์„ ์˜ˆ์ œ์™€ ํ•จ๊ป˜ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.๐Ÿ™‚

 

1๏ธโƒฃ Map.keyset() : ๋ชจ๋“  ํ‚ค ๋ฐ˜ํ™˜

keySet() ๋ฉ”์„œ๋“œ๋Š” Map์˜ ๋ชจ๋“  ํ‚ค๋ฅผ Set ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜์—ฌ, ๊ฐ ํ‚ค์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์‰ฝ๊ฒŒ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค. Map์˜ ํ‚ค๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๊ฐ€์ ธ์™€ ๊ฐ ํ‚ค์— ๋Œ€ํ•ด ๊ฐ’์„ ์กฐํšŒํ•˜๋Š” ๊ฐ„๋‹จํ•˜๊ณ  ์ง๊ด€์ ์ธ ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

Map<String, Integer> map = new HashMap<>();
map.put("์‚ฌ๊ณผ", 10); map.put("๋”ธ๊ธฐ", 20); // ํ‚ค-๊ฐ’ ์Œ ์ถ”๊ฐ€
// Map์˜ ๋ชจ๋“  ํ‚ค๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๊ฐ’์„ ์ถœ๋ ฅโœจ
for (String key : map.keySet()) {
Integer value = map.get(key); // ๊ฐ ํ‚ค์— ๋Œ€ํ•œ ๊ฐ’์„ get() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ€์ ธ์˜ด
System.out.println("ํ‚ค: " + key + ", ๊ฐ’: " + value);
}

 

2๏ธโƒฃ Map.entrySet() : ๋ชจ๋“  ์—”ํŠธ๋ฆฌ ๋ฐ˜ํ™˜

entrySet() ๋ฉ”์„œ๋“œ๋Š” Map์˜ ๋ชจ๋“  ํ‚ค-๊ฐ’ ์Œ(์—”ํŠธ๋ฆฌ)์„ Set ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ํ•˜์—ฌ, ๊ฐ ์—”ํŠธ๋ฆฌ(Map.Entry)์˜ ํ‚ค์™€ ๊ฐ’์„ ๋ณด๋‹ค ์ง์ ‘์ ์œผ๋กœ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. entrySet()์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐ Map.Entry ๊ฐ์ฒด์—์„œ ํ‚ค์™€ ๊ฐ’์„ ๋™์‹œ์— ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์–ด ๋”์šฑ ํšจ์œจ์ ์ž…๋‹ˆ๋‹ค.

Map<String, Integer> map = new HashMap<>();
map.put("์‚ฌ๊ณผ", 10); map.put("๋”ธ๊ธฐ", 20); // ํ‚ค-๊ฐ’ ์Œ ์ถ”๊ฐ€
// Map์˜ ๋ชจ๋“  ์—”ํŠธ๋ฆฌ๋ฅผ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ํ‚ค์™€ ๊ฐ’์„ ์ถœ๋ ฅโœจ
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println("ํ‚ค: " + entry.getKey() + ", ๊ฐ’: " + entry.getValue());
}

 

3๏ธโƒฃ Map.entry() : ๊ฐœ๋ณ„ ์—”ํŠธ๋ฆฌ ์ƒ์„ฑ

Java 9 ์ด์ƒ์—์„œ๋Š” Map.entry() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐœ๋ณ„ Map.Entry ๊ฐ์ฒด๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ํ†ตํ•ด Map ๊ฐ์ฒด๋ฅผ ๋”ฐ๋กœ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ ๋„ ๊ฐœ๋ณ„ ํ‚ค-๊ฐ’ ์Œ์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์–ด, ์ฝ”๋“œ๊ฐ€ ๋”์šฑ ๊ฐ„๊ฒฐํ•ด์ง‘๋‹ˆ๋‹ค.

// Map.Entry ๊ฐ์ฒด๋ฅผ ๊ฐ๊ฐ ์ƒ์„ฑโœจ
Map.Entry<String, Integer> entry1 = Map.entry("์‚ฌ๊ณผ", 10);
Map.Entry<String, Integer> entry2 = Map.entry("๋”ธ๊ธฐ", 20);
// ๊ฐ ์—”ํŠธ๋ฆฌ์˜ ํ‚ค์™€ ๊ฐ’์„ ์ถœ๋ ฅ
System.out.println("ํ‚ค: " + entry1.getKey() + ", ๊ฐ’: " + entry1.getValue()); // ๊ฒฐ๊ณผ: ํ‚ค: ์‚ฌ๊ณผ, ๊ฐ’: 10
System.out.println("ํ‚ค: " + entry2.getKey() + ", ๊ฐ’: " + entry2.getValue()); // ๊ฒฐ๊ณผ: ํ‚ค: ๋”ธ๊ธฐ, ๊ฐ’: 20

 

๐Ÿ’ก ๊ฒฐ๋ก 

keySet()๊ณผ entrySet()์€ Map์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ˜๋ณต์ ์œผ๋กœ ๋‹ค๋ฃฐ ๋•Œ ์œ ์šฉํ•˜๋ฉฐ, Map.entry()๋Š” Java 9 ์ด์ƒ์—์„œ ํŠน์ • ์—”ํŠธ๋ฆฌ๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ƒ์„ฑํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•๋“ค์„ ์ดํ•ดํ•˜๊ณ  ํ™œ์šฉํ•จ์œผ๋กœ์จ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ Map์„ ๋ณด๋‹ค ํšจ๊ณผ์ ์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.๐Ÿ‘๐Ÿป

yewon31