[JAVA] HashMap
HashMap
1. ๊ฐ๋
Key-Value๋ก ์ ์ฅ- ๋ด๋ถ์ ์ผ๋ก ํด์ฌํ ์ด๋ธ ์ฌ์ฉ
- Key๋ฅผ ์ฌ์ฉํ์ฌ ๊ฐ์ ๊ฒ์ํ๋ ์๋ฃ๊ตฌ์กฐ (Key๋ง ์ ์ฅ ->
HashSet) - ํค๋ ์ค๋ณต ๋ถ๊ฐ, ๊ฐ์ ์ค๋ณต ๊ฐ๋ฅ
- ์์๋ฅผ ๋ณด์ฅ X (LinkedHashMap์ ์์ ๋ณด์ฅ)
- ์ ์ํ key์ ๊ฒฝ์ฐ, 0~65535๊น์ง๋ ๋ฒํท์ ์ธ๋ฑ์ค์ key๊ฐ์ด ๋์ผ -> key๊ธฐ์ค ์ค๋ฆ์ฐจ์ ์ ๋ ฌ ํํ
2. ์ ์ธ
HashMap<String, String> mp = new HashMap<>();
// ๊ถ์ฅ ๋ฐฉ์: ์ธํฐํ์ด์ค๋ก
Map<String, String> map = new HashMap<>();
3. ์ฃผ์ ๋ฉ์๋
| ๋ฉ์๋ | ์ค๋ช | ํ๊ท /์ต์ |
|---|---|---|
put(k, v) |
๋ฐ์ดํฐ ์ฝ์ ๋๋ ์์ (์ด๋ฏธ ํด๋น ํค O) | O(1)/O(N) |
get(k) |
๋ฐ์ดํฐ ์กฐํ (k์์ผ๋ฉด null) | O(1)/O(N) |
containsKey(k) |
์ผ์นํ๋ key (boolean) | O(1)/O(N) |
containsValue(v) |
ํด๋น ๊ฐ ์กด์ฌ ์ฌ๋ถ ๋ฐํ | O(N)/O(N) |
size() |
ํค-๊ฐ ์์ ๊ฐ์ ๋ฐํ | O(1)/O(1) |
remove(k) |
ํด๋น ํค ์ญ์ | O(1)/O(N) |
clear() |
๋ชจ๋ ํญ๋ชฉ ์ญ์ | O(N)/O(N) |
isEmpty() |
๋งต์ด ๋น์๋์ง ํ์ธ | O(1)/O(1) |
keySet() |
ํค๋ค๋ง Set์ผ๋ก ๋ฐํ |
O(N)/O(N) |
values() |
๊ฐ๋ค๋ง Collection์ผ๋ก ๋ฐํ |
O(N)/O(N) |
entrySet() |
Map.Entry์ ์งํฉ ๋ฐํ, ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉ |
O(N)/O(N) |
์ฝ๋
put(k, v)map.put("ํ์ดํ","์ฟ ๋ก์ค"); map.put("ํํฐํํฐ", "ํ์์นด"); System.out.println(map);\ // put์ผ๋ก ๊ฐ ์์ map.put("ํ์ดํ", "์ธ ํค์๋ง"); System.out.println(map);{ํํฐํํฐ=ํ์์นด, ํ์ดํ=์ฟ ๋ก์ค} {ํํฐํํฐ=ํ์์นด, ํ์ดํ=์ธ ํค์๋ง}get(k)System.out.println("ํ์ดํ์๋ "+map.get("ํ์ดํ")+"๊ฐ ์๋ค"); // ์๋ key๋ก ์กฐํ -> null System.out.println("์ฃผ์ ํ์ ์ "+map.get("์ฃผ์ ํ์ ")+"์ด ์๋๋ฐ");ํ์ดํ์๋ ์ธ ํค์๋ง๊ฐ ์๋ค ์ฃผ์ ํ์ ์ null์ด ์๋๋ฐcontainsKey(k)if(map.containsKey("ํ์ดํ")) { System.out.println("ํ์ดํ๊ฐ ์๋ค...!"); }ํ์ดํ๊ฐ ์๋ค...!containsValue(v)if(!map.containsValue("๋๊ธฐ")) { map.put("๋ธ๋ฃจ๋ก", "๋๊ธฐ"); System.out.println(map); }{ํํฐํํฐ=ํ์์นด, ๋ธ๋ฃจ๋ก=๋๊ธฐ, ํ์ดํ=์ธ ํค์๋ง}size()System.out.println("ํ์ฌ ๊ฐ์๋ "+map.size()+"๊ฐ๋ค!");ํ์ฌ ๊ฐ์๋ 3๊ฐ๋ค!remove(k)System.out.println(map); map.remove("ํ์ดํ"); System.out.println(map);{ํํฐํํฐ=ํ์์นด, ๋ธ๋ฃจ๋ก=๋๊ธฐ, ํ์ดํ=์ธ ํค์๋ง} {ํํฐํํฐ=ํ์์นด, ๋ธ๋ฃจ๋ก=๋๊ธฐ}clear()System.out.println(map); map.clear(); System.out.println(map);{ํํฐํํฐ=ํ์์นด, ๋ธ๋ฃจ๋ก=๋๊ธฐ} {}isEmpty()if(map.isEmpty()) { map.put("NCIS", "๋๋ ธ์กฐ" ); map.put("Bones", "๋ถ์ค"); map.put("newsroom", "ํํผ"); } System.out.println(map);{Bones=๋ถ์ค, NCIS=๋๋ ธ์กฐ, newsroom=ํํผ}keySet()// type ํ์ธ System.out.println(map.keySet().getClass()); System.out.println(map.keySet()); // keySet์ ์ฐธ์กฐ ํํ๊ธฐ ๋๋ฌธ์ key์ญ์ ์ hashMap์์๋ ์ญ์ ๋จ Set<String> keys = map.keySet(); keys.remove("NCIS"); System.out.println(keys); System.out.println(map);class java.util.HashMap$KeySet [Bones, NCIS, newsroom] [Bones, newsroom] {Bones=๋ถ์ค, newsroom=ํํผ}values()Collection<String> vals = map.values(); System.out.println(vals);[๋ถ์ค, ํํผ]entrySet()Set<Map.Entry<String, String>> mapE = map.entrySet(); System.out.println(mapE); //๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉ for(Map.Entry<String, String> m : map.entrySet()) { System.out.println("์ ๋ชฉ: " + m.getKey()); System.out.println("์บ๋ฆญํฐ: "+m.getValue()); }[Bones=๋ถ์ค, newsroom=ํํผ] ์ ๋ชฉ: Bones ์บ๋ฆญํฐ: ๋ถ์ค ์ ๋ชฉ: newsroom ์บ๋ฆญํฐ: ํํผ
4. getOrDefault() & putIfAbsent()
getOrDefault(k, ๊ธฐ๋ณธ๊ฐ)- ์์ ๋ ๊ธฐ๋ณธ๊ฐ
containsKey->get์ ํ ๋ฒ์ ์ฒ๋ฆฌ- O(1)/O(N)
System.out.println(map.getOrDefault("westwing", "์๋ค ์๋์!"));์๋ค ์๋์!
putIfAbsent(k, v)- k ์์ ๋๋ง ์ฝ์
put์ผ๋ก ๊ธฐ์กด ๊ฐ ์์ ๋๋ ๊ฒ ๋ฐฉ์ง- ์กฐ๊ฑด๋ถ ์ฝ์ ๋จ์ํ
- O(1)/O(N)
map.putIfAbsent("Bones", "ํ์ง์ค"); System.out.println(map);{Bones=๋ถ์ค, newsroom=ํํผ}
Leave a comment