์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- javaCoding
- ์๋๋ก์ด๋
- ์ฝํ๋ฆฐ
- ์ฝํ ์๋ฐ
- Java
- ํ๋ฉด ํฌ๊ธฐ ๊ตฌํ๊ธฐ
- ์ฐํ ํ๊ธ๋ฐ
- ๋ทฐ๋ฐ์ธ๋ฉ
- ScreenSize
- pattern
- ์ฝ๋ฉํ ์คํธ JAVA
- programmers
- ํฐ์คํ ๋ฆฌ์ฑ๋ฆฐ์ง
- baekjoon
- ์๋ฐ
- Android
- ์ฝ๋ฉํ ์คํธ ์๋ฐ
- ModelViewPresenter
- ์ฝํ
- kotlin
- ์ค๋ธ์
- CodingTest
- ์ฝ๋ฉํ ์คํธ
- ์๋ฐ ์ฝ๋ฉํ ์คํธ
- BottomNavigation
- viewpager2
- CodingTestJava
- ๋ฐฑ์ค
- JavaCodingTest
- Coding-Test
- Today
- Total
KDLiam
JAVA - HashMap ๋ณธ๋ฌธ
๐ 1. HashMap์ด๋?
HashMap์ **Key(ํค)**์ Value(๊ฐ) ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ์๋ฃ๊ตฌ์กฐ์
๋๋ค.
์๋ฅผ ๋ค์ด, "์ฌ๊ณผ" → 3๊ฐ, "๋ฐ๋๋" → 5๊ฐ ๊ฐ์ ํํ๋ก ์ ์ฅ๋ฉ๋๋ค.
์ฆ, **“์ด๋ค ๋ฐ์ดํฐ(ํค)์ ํด๋นํ๋ ๊ฐ์ด ๋ญ์ผ?”**๋ฅผ ๋งค์ฐ ๋น ๋ฅด๊ฒ ์ฐพ์ ์ ์์ต๋๋ค.
์๋ฃ ๊ตฌ์กฐ | Key-Value ์์ผ๋ก ์ ์ฅ |
์ค๋ณต | Key๋ ์ค๋ณต ๋ถ๊ฐ / Value๋ ์ค๋ณต ๊ฐ๋ฅ |
์์ | ์ ์ฅ ์์ ๋ณด์ฅ ์ ๋จ |
ํ์ ์๋ | ํ๊ท O(1) — ๋งค์ฐ ๋น ๋ฆ |
๋ํ ๋ฉ์๋ | put(), get(), containsKey(), remove(), entrySet() |
๐ง 2. HashMap ๊ธฐ๋ณธ ๋ฌธ๋ฒ
import java.util.*;
public class Main {
public static void main(String[] args) {
// โ ์ ์ธ
Map<String, Integer> map = new HashMap<>();
// โก ๊ฐ ์ถ๊ฐ
map.put("apple", 3);
map.put("banana", 5);
map.put("orange", 2);
// โข ๊ฐ ๊ฐ์ ธ์ค๊ธฐ
System.out.println(map.get("apple")); // 3
// โฃ Key ์กด์ฌ ์ฌ๋ถ ํ์ธ
System.out.println(map.containsKey("banana")); // true
// โค Key ์ ๊ฑฐ
map.remove("orange");
// โฅ ์ ์ฒด ์ํ (entrySet ์ด์ฉ)
for (Map.Entry<String, Integer> entry : map.entrySet()) {
System.out.println(entry.getKey() + " : " + entry.getValue());
}
}
}
โ๏ธ 3. ์์ฃผ ์ฐ๋ ํจ์ ์ ๋ฆฌ
Method | Description | Example |
put(K key, V value) | ๋ฐ์ดํฐ ์ถ๊ฐ | map.put("A", 1) |
get(Object key) | Key์ ํด๋นํ๋ Value ๊ฐ์ ธ์ค๊ธฐ | map.get("A") → 1 |
getOrDefault(key, defaultValue) | Key ์์ผ๋ฉด ๊ธฐ๋ณธ๊ฐ ๋ฆฌํด | map.getOrDefault("B", 0) |
containsKey(Object key) | Key ์กด์ฌ ์ฌ๋ถ ํ์ธ | true / false |
remove(Object key) | ํด๋น Key ์ญ์ | map.remove("A") |
entrySet() | Key-Value ์ ์ฒด ์์ ๋ฐํ (๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉ) | for(Map.Entry<K,V> e : map.entrySet()) |
keySet() | Key๋ง ์ ๋ถ ๊ฐ์ ธ์ค๊ธฐ | for(K key : map.keySet()) |
values() | Value๋ง ์ ๋ถ ๊ฐ์ ธ์ค๊ธฐ | for(V val : map.values()) |
๐ 4. Map.Entry๋?
Map์๋ ์ง์ ์ ์ผ๋ก “i๋ฒ์งธ” ์์๊ฐ ์์ต๋๋ค.
๊ทธ๋์ entrySet()์ ํตํด Key-Value ์(Entry)์ ํ๋์ฉ ๊บผ๋ด๋ฉฐ ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฝ๋๋ค.
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
int key = entry.getKey(); // ํค ๊ฐ
int value = entry.getValue(); // ๋ฐธ๋ฅ ๊ฐ
System.out.println(key + " : " + value);
}
์ด ๋ฐฉ์์ “HashMap ์ ์ฒด๋ฅผ ๋๋ฉฐ Key์ Value๋ฅผ ๋์์ ํ์ธํ ๋” ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋ฉ๋๋ค.
๐งพ 5. HashMap vs ๋ฐฐ์ด ๋น๊ต
๊ตฌ๋ถ๋ฐฐ์ด | Array | HashMap |
์ ์ฅ ๋ฐฉ์ | ์ธ๋ฑ์ค๋ก ์ ๊ทผ | Key๋ก ์ ๊ทผ |
์ ๊ทผ ์๋ | O(1) | ํ๊ท O(1) |
๋ฐ์ดํฐ ํํ | ํ ๊ฐ์ง ๊ฐ๋ง | Key-Value ์ |
์ค๋ณต | ๊ฐ ์ค๋ณต ๊ฐ๋ฅ | Key ์ค๋ณต ๋ถ๊ฐ |
์์ | ์ธ๋ฑ์ค ์์ ์กด์ฌ | ์์ ๋ณด์ฅ ์ ๋จ |
์ฌ์ฉ ์์ | ํ์ ์ ์ ๋ฆฌ์คํธ | ์ด๋ฆ๋ณ ์ ์ ์ ์ฅ, ๋น๋์ ๊ณ์ฐ ๋ฑ |
โ ์์ฝํ์๋ฉด:
- ๋ฐฐ์ด์ “์์๋๋ก ์ ์ฅ, ์ธ๋ฑ์ค๋ก ์ ๊ทผ”ํ ๋ ์ ๋ฆฌ.
- HashMap์ “๋น ๋ฅธ ๊ฒ์, Key-Value ๋งค์นญ”์ด ํ์ํ ๋ ์ ๋ฆฌ.
๐ก 6. ์ฝ๋ฉํ ์คํธ์์ ์์ฃผ ์ฐ์ด๋ HashMap ํจํด
โ โ ๋น๋์(Counting) ์ธ๊ธฐ
Map<Integer, Integer> cntMap = new HashMap<>();
for (int num : array) {
cntMap.put(num, cntMap.getOrDefault(num, 0) + 1);
}
โก๏ธ ๋ฐฐ์ด์ ๊ฐ ๊ฐ์ด ๋ช ๋ฒ ๋ฑ์ฅํ๋์ง ์ฝ๊ฒ ๊ณ์ฐ ๊ฐ๋ฅ.
โ โก ์ต๋น๊ฐ(๊ฐ์ฅ ๋ง์ด ๋์จ ์) ์ฐพ๊ธฐ
int maxValue = -1;
int mode = -1;
boolean duplicate = false;
for (Map.Entry<Integer, Integer> entry : cntMap.entrySet()) {
if (entry.getValue() > maxValue) {
maxValue = entry.getValue();
mode = entry.getKey();
duplicate = false;
} else if (entry.getValue() == maxValue) {
duplicate = true;
}
}
if (duplicate) System.out.println(-1);
else System.out.println(mode);
โก๏ธ ๊ฐ์ ์ต๋น๊ฐ์ด ์ฌ๋ฌ ๊ฐ๋ฉด -1์ ์ถ๋ ฅํ๋๋ก ๊ตฌํํ ์ ์์.
โ๏ธ 7. ์๊ฐ๋ณต์ก๋ ๋น๊ต
๋น๋ ์ธ๊ธฐ | O(N) | O(N) |
์ต๋น๊ฐ ํ์ | O(1000) (๊ณ ์ ๊ธธ์ด ๋ฐฐ์ด) | O(N) |
๊ณต๊ฐ ๋ณต์ก๋ | ์์ ํฌ๊ธฐ(1000) | ๋ฐ์ดํฐ ํฌ๊ธฐ๋งํผ ๋์ ์ฆ๊ฐ |
ํ์ฅ์ฑ | ๊ฐ ๋ฒ์๊ฐ ์์ ๋ ์ ๋ฆฌ | ๊ฐ ๋ฒ์๊ฐ ํด ๋ ์ ๋ฆฌ |
โ ์ ๋ฆฌ
- ๊ฐ์ ๋ฒ์๊ฐ ์๋ค → ๋ฐฐ์ด์ด ์ ๋ฆฌ (์: 0~999 ์ฌ์ด ์ ์)
- ๊ฐ์ ๋ฒ์๊ฐ ํฌ๊ฑฐ๋ ๋ค์ํ๋ค → HashMap์ด ์ ๋ฆฌ (์: ๋ฌธ์์ด, ํฐ ์ ๋ฑ)
๐งญ 8. ๊ฒฐ๋ก
๊ฐ์ ๋ฒ์๊ฐ ์๊ณ ์ ์ํ | ๋ฐฐ์ด | ๋จ์ํ๊ณ ๋น ๋ฆ |
๊ฐ์ ๋ฒ์๊ฐ ํฌ๊ฑฐ๋ ๋ค์ | HashMap | Key ๊ธฐ๋ฐ ๋น ๋ฅธ ๊ฒ์ |
๋ฌธ์์ด, ๊ฐ์ฒด, ํฐ ์ ๋ค๋ฃธ | HashMap | ๋ค์ํ Key ํ์ ์ง์ |
โจ ๋ง๋ฌด๋ฆฌ
HashMap์ ์ฝ๋ฉํ
์คํธ์์ **“๋ฐ์ดํฐ ๊ฐ์ ์ธ๊ธฐ”, “์ค๋ณต ์ฒดํฌ”, “๋น ๋ฅธ ํ์”**์ ์์ฃผ ์ฌ์ฉ๋ฉ๋๋ค.
๋ฐฐ์ด๋ณด๋ค ์ฝ๊ฐ ๋ฌธ๋ฒ์ด ๋ณต์กํ์ง๋ง, ์ต์ํด์ง๋ฉด ํจ์ฌ ์ ์ฐํ ์ฝ๋๋ฅผ ์งค ์ ์์ต๋๋ค.
โ Tip:
“๋ฐฐ์ด๋ก ํ ์ ์์๊น?”๋ฅผ ๋จผ์ ์๊ฐํ๊ณ ,
“๊ฐ์ ๋ฒ์๊ฐ ํฌ๊ฑฐ๋ ๋ค์ํ๋ฉด HashMap์ผ๋ก ์ ํ”ํ๋ ๊ฒ ๊ฐ์ฅ ํจ์จ์ ์ธ ์ ๊ทผ์ ๋๋ค.
'์ฝํ ์ค๋น(JAVA)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Sort(์ ๋ ฌ) (0) | 2025.10.17 |
---|