HashMap์ ํค-๊ฐ ์์ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ๋ก, ํด์ฑ(Hashing) ๊ธฐ๋ฒ์ ํตํด ๋ฐ์ดํฐ๋ฅผ ํจ์จ์ ์ผ๋ก ์ ์ฅํ๊ณ ์กฐํํ ์ ์๋ค. ๋ณดํต HashMap์ ์๋ฐ์ ๊ฐ์ ์ธ์ด์์ ์ฌ์ฉ๋๋ ์๋ฃ๊ตฌ์กฐ์ด๋ค.
HashMap์ ์ฌ์ฉํ๋ ค๋ฉด java.util.HashMap ํจํค์ง๋ฅผ importํด์ผ ํ๋ค.
import java.util.HashMap;
public class Example {
public static void main(String[] args) {
HashMap<String, Integer> map = new HashMap<>();
}
}
put ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํค-๊ฐ ์์ ์ถ๊ฐํ ์ ์๋ค.
.put("key", value)
map.put("apple", 3);
map.put("banana", 2);
get ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํค์ ํด๋นํ๋ ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์๋ค. ํค๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด null์ ๋ฐํํ๋ค.
.get("key")
int appleCount = map.get("apple"); // appleCount๋ 3์ด ๋ฉ๋๋ค.
ํน์ ํค๊ฐ ์กด์ฌํ๋์ง ํ์ธํ ๋๋ containsKey ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ค.
.containsKey("key")
if (map.containsKey("banana")) {
System.out.println("๋ฐ๋๋๊ฐ ์์ต๋๋ค.");
}
remove ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ํน์ ํค-๊ฐ ์์ ์ญ์ ํ ์ ์๋ค.
.remove("key")
map.remove("apple"); // "apple" ํค์ ๊ทธ์ ํด๋นํ๋ ๊ฐ์ด ์ ๊ฑฐ๋ฉ๋๋ค.
ํ์ฌ HashMap์ ์ ์ฅ๋ ํค-๊ฐ ์์ ๊ฐ์๋ size ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ ์ ์๋ค.
.size()
int size = map.size(); // ํ์ฌ ์ ์ฅ๋ ํญ๋ชฉ์ ๊ฐ์๋ฅผ ๋ฐํํฉ๋๋ค.
๋ชจ๋ ํค-๊ฐ ์์ ์ถ๋ ฅํ๋ ค๋ฉด keySet()๊ณผ values(), ๋๋ entrySet() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
keySet() : ๋ชจ๋ ํค๋ฅผ ๋ฐํ
values() : ๋ชจ๋ ๊ฐ์ ๋ฐํ
entrySet() : ํค์ ๊ฐ์ ํจ๊ป ๋ฐํ
import java.util.HashMap;
import java.util.Map;
public class Example {
public static void main(String[] args) {
// HashMap ์ ์ธ ๋ฐ ์ด๊ธฐํ
HashMap<String, Integer> map = new HashMap<>();
// ๊ฐ ์ถ๊ฐ
map.put("apple", 3);
map.put("banana", 2);
map.put("orange", 5);
// ์ ์ฒด ์ํ ๋ฐ ์ถ๋ ฅ (keySet ์ฌ์ฉ)
System.out.println("Using keySet:");
for (String key : map.keySet()) {
System.out.println(key + ": " + map.get(key));
}
// ์ ์ฒด ๊ฐ ์ํ ๋ฐ ์ถ๋ ฅ (values ์ฌ์ฉ)
System.out.println("Using values():");
for (Integer value : map.values()) {
System.out.println(value);
}
// ์ ์ฒด ์ํ ๋ฐ ์ถ๋ ฅ (entrySet ์ฌ์ฉ)
System.out.println("\nUsing entrySet:");
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
}
Map.Entry<String, Integer>๋ HashMap์์ ํค-๊ฐ ์ ํ๋๋ฅผ ๋ํ๋ด๋ ์๋ฃํ์ด๋ค. HashMap์ entrySet() ๋ฉ์๋๋ Map.Entry ๊ฐ์ฒด๋ค๋ก ๊ตฌ์ฑ๋ ์งํฉ์ ๋ฐํํ๋ฉฐ, ์ด๋ฅผ ํตํด HashMap์ ๊ฐ ํญ๋ชฉ์ ์ ๊ทผํ ์ ์๋ค. ์ด ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ๋ฉด ํค์ ๊ฐ์ ๋์์ ์ ๊ทผํ ์ ์์ด, keySet()์ผ๋ก ํค๋ฅผ ๊ฐ์ ธ์ get() ๋ฉ์๋๋ก ๊ฐ์ ์ฐพ๋ ๊ฒ๋ณด๋ค ๊ฐํธํ๋ค.
๊ตฌ์กฐ ๋ฐ ํน์ง
Map.Entry<K, V>๋ HashMap์ ๋ด๋ถ ์ธํฐํ์ด์ค์ด๋ฉฐ, ๊ฐ ํญ๋ชฉ์ ๋ํด ๋ค์๊ณผ ๊ฐ์ ๋ฉ์๋๋ฅผ ์ ๊ณตํ๋ค:
getKey() : ํ์ฌ ํญ๋ชฉ์ ํค๋ฅผ ๋ฐํํ๋ค.
getValue() : ํ์ฌ ํญ๋ชฉ์ ๊ฐ์ ๋ฐํํ๋ค.
์์ ์ฝ๋
์๋ ์์ ์์๋ entrySet()์ ์ฌ์ฉํด HashMap์ ๋ชจ๋ ํญ๋ชฉ์ Map.Entry ๊ฐ์ฒด๋ก ๊ฐ์ ธ์ ํค์ ๊ฐ์ ์ถ๋ ฅํ๋ค.
import java.util.HashMap;
import java.util.Map;
public class Example {
public static void main(String[] args) {
// HashMap ์ ์ธ ๋ฐ ์ด๊ธฐํ
HashMap<String, Integer> map = new HashMap<>();
map.put("apple", 3);
map.put("banana", 2);
map.put("orange", 5);
// entrySet() ์ฌ์ฉํ์ฌ ํค์ ๊ฐ ์ถ๋ ฅ
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
}
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ
Key: apple, Value: 3
Key: banana, Value: 2
Key: orange, Value: 5
์ ์ฝ๋์์ entrySet() ๋ฉ์๋๋ HashMap์ ๋ชจ๋ Map.Entry ๊ฐ์ฒด๋ค๋ก ๊ตฌ์ฑ๋ Set์ ๋ฐํํ๋ฏ๋ก, ๊ฐ entry ๊ฐ์ฒด์์ getKey()์ getValue()๋ก ํค์ ๊ฐ์ ๋์์ ๊ฐ์ ธ์ฌ ์ ์๋ค.