๐ก HashMap์ด๋? (Java ์์ ํฌํจ)
HashMap์ Java์์ ์์ฃผ ์ฌ์ฉ๋๋ ์๋ฃ๊ตฌ์กฐ๋ก, ํค-๊ฐ(Key-Value) ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ํด์ ํ
์ด๋ธ ๊ธฐ๋ฐ์ ํด๋์ค์
๋๋ค. java.util
ํจํค์ง์ ํฌํจ๋์ด ์์ผ๋ฉฐ, ๋น ๋ฅธ ํ์, ์ฝ์
, ์ญ์ ์์
์ ์ ๊ณตํฉ๋๋ค.
๐ HashMap์ ํน์ง
๋น ๋ฅธ ๊ฒ์ ์๋:
- HashMap์ ์ผ๋ฐ์ ์ผ๋ก
O(1)
์ ์๊ฐ ๋ณต์ก๋๋ก ํ์, ์ฝ์ , ์ญ์ ์์ ์ ์ํํ ์ ์์ต๋๋ค.
- HashMap์ ์ผ๋ฐ์ ์ผ๋ก
ํค์ ์ค๋ณต ๋ถํ:
- ๋์ผํ ํค๋ก ๊ฐ์ ์ถ๊ฐํ๋ฉด, ๊ธฐ์กด ๊ฐ์ด ์๋ก์ด ๊ฐ์ผ๋ก ๋ฎ์ด์ฐ๊ธฐ๋ฉ๋๋ค.
์์ ๋ณด์ฅ ์ ๋จ:
- ์
๋ ฅ๋ ๋ฐ์ดํฐ์ ์์๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ ์์๊ฐ ํ์ํ๋ค๋ฉด
LinkedHashMap
์ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
- ์
๋ ฅ๋ ๋ฐ์ดํฐ์ ์์๋ฅผ ๋ณด์ฅํ์ง ์์ต๋๋ค. ๋ฐ์ดํฐ๋ฅผ ์
๋ ฅํ ์์๊ฐ ํ์ํ๋ค๋ฉด
๐ Java์์ HashMap ์์ ์ฝ๋
import java.util.HashMap;
public class HashMapExample {
public static void main(String[] args) {
// HashMap ์์ฑ
HashMap<String, Integer> scores = new HashMap<>();
// ๋ฐ์ดํฐ ์ฝ์
scores.put("Alice", 85);
scores.put("Bob", 90);
scores.put("Charlie", 75);
// ๊ฐ ์กฐํ
int aliceScore = scores.get("Alice");
System.out.println("Alice์ ์ฑ์ : " + aliceScore); // ์ถ๋ ฅ: Alice์ ์ฑ์ : 85
// ํค ์กด์ฌ ์ฌ๋ถ ํ์ธ
if (scores.containsKey("Bob")) {
System.out.println("Bob์ ์ฑ์ ์ด ์กด์ฌํฉ๋๋ค.");
}
// ๋ฐ์ดํฐ ์ญ์
scores.remove("Charlie");
// HashMap ์ถ๋ ฅ
System.out.println("HashMap ๋ด์ฉ: " + scores);
}
}
์ถ๋ ฅ ๊ฒฐ๊ณผ:
Alice์ ์ฑ์ : 85
Bob์ ์ฑ์ ์ด ์กด์ฌํฉ๋๋ค.
HashMap ๋ด์ฉ: {Alice=85, Bob=90}
๐ ์ ์ฌํ Java ํด๋์ค์ ๋น๊ต
ํด๋์ค | ์ค๋ช | ํน์ง ๋ฐ ์ฐจ์ด์ |
---|---|---|
HashMap | ํด์ ํ ์ด๋ธ ๊ธฐ๋ฐ์ ํค-๊ฐ ์ ์ฅ ๊ตฌ์กฐ | ์์ ๋ณด์ฅ ์ ๋จ, O(1) ์๊ฐ ๋ณต์ก๋ |
LinkedHashMap | ์ ๋ ฅ ์์๊ฐ ์ ์ง๋๋ HashMap์ ํ์ฅ ํด๋์ค | ๋ฐ์ดํฐ์ ์ ๋ ฅ ์์๋ฅผ ์ ์ง |
TreeMap | ์ด์ง ํธ๋ฆฌ ๊ธฐ๋ฐ์ ์ ๋ ฌ๋ ํค-๊ฐ ์ ์ฅ ๊ตฌ์กฐ | ํค๊ฐ ์๋์ผ๋ก ์ ๋ ฌ๋จ, O(log n) ์๊ฐ ๋ณต์ก๋ |
Hashtable | HashMap๊ณผ ์ ์ฌํ์ง๋ง, ๋๊ธฐํ๋ ํด๋์ค | ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํ์ง๋ง ์ฑ๋ฅ ์ ํ |
๐ HashMap์ ์ฃผ์ ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช |
---|---|
put(key, value) |
ํค-๊ฐ ์์ ์ถ๊ฐ ๋๋ ์ ๋ฐ์ดํธ |
get(key) |
ํค์ ํด๋นํ๋ ๊ฐ์ ๋ฐํ |
remove(key) |
ํค์ ํด๋นํ๋ ๊ฐ์ ์ญ์ |
containsKey(key) |
ํค๊ฐ ์กด์ฌํ๋์ง ์ฌ๋ถ ๋ฐํ |
containsValue(value) |
๊ฐ์ด ์กด์ฌํ๋์ง ์ฌ๋ถ ๋ฐํ |
size() |
HashMap์ ํฌ๊ธฐ ๋ฐํ |
clear() |
๋ชจ๋ ํค-๊ฐ ์์ ์ ๊ฑฐ |
๐ HashMap๊ณผ Hashtable ๋น๊ต
Java์์ HashMap
๊ณผ Hashtable
์ ๋งค์ฐ ์ ์ฌํ์ง๋ง ๋ช ๊ฐ์ง ์ฐจ์ด์ ์ด ์์ต๋๋ค:
ํน์ง | HashMap | Hashtable |
---|---|---|
๋๊ธฐํ ์ฌ๋ถ | ๋น๋๊ธฐํ (synchronized ์๋) | ๋๊ธฐํ๋จ (synchronized) |
Null ํ์ฉ ์ฌ๋ถ | ํค์ ๊ฐ์ null ํ์ฉ |
null ํ์ฉ ์ ๋จ |
์ฑ๋ฅ | ๋ ๋น ๋ฆ | ์ฑ๋ฅ ์ ํ ๊ฐ๋ฅ์ฑ ์์ |
- Hashtable์ ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์์ ํ์ง๋ง, ๋๊ธฐํ๋ก ์ธํด ์ฑ๋ฅ์ด ์ ํ๋ ์ ์์ต๋๋ค.
- HashMap์ ๋น๋๊ธฐํ๋์ด ์์ด ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์ ์ฌ์ฉ ์ ๋๊ธฐํ ์ฒ๋ฆฌ๊ฐ ํ์ํ ์ ์์ต๋๋ค.
โ๏ธ ๋ง๋ฌด๋ฆฌ
HashMap์ ๋น ๋ฅธ ๊ฒ์๊ณผ ๋ฐ์ดํฐ ์กฐ์์ด ํ์ํ ์ํฉ์์ ๋งค์ฐ ์ ์ฉํ๊ฒ ์ฌ์ฉ๋๋ฉฐ, Java์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋์
๋๋ค. ๋ค๋ง, ๋ฉํฐ์ค๋ ๋ ํ๊ฒฝ์์๋ ConcurrentHashMap
์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ผ๋ฉฐ, ์
๋ ฅ ์์๋ฅผ ๋ณด์ฅํด์ผ ํ๋ค๋ฉด LinkedHashMap
์ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.
์ด ์๋ฃ๋ ์์คํ ์ํคํ ์ฒ ์ดํด์ ํ์ฉ ์๋ฃ๋ฅผ ์ฐธ๊ณ ํ์ฌ ์์ฑํ์์ต๋๋ค.
'Topcit' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์ ์์ผ(Agile) ๋ฐฉ๋ฒ๋ก (0) | 2024.11.11 |
---|---|
ํ์๊ด๋ฆฌ (0) | 2024.11.10 |
์ฑ๊ธํ์ด์ง ์ดํ๋ฆฌ์ผ์ด์ (1) | 2024.11.10 |
ํ์ ์๊ณ ๋ฆฌ์ฆ (0) | 2024.11.10 |
์์ค ๊ฒฐํฉ๋(Source Coupling) (0) | 2024.11.10 |