HashMap, LinkedHashMap, TreeMap (JAVA)

ํšฝยท2024๋…„ 10์›” 29์ผ
0

algorithm&data-structure

๋ชฉ๋ก ๋ณด๊ธฐ
15/17

๐Ÿ“ Map

: Map์€ ํ‚คkey - ๊ฐ’value ์Œ์„ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์ด๋‹ค.
๊ฐ ํ‚ค๋Š” ๊ณ ์œ ํ•ด์•ผ ํ•˜๋ฉฐ, ํ‚ค๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

  • ์ค‘๋ณต ํ‚ค ๋ถˆ๊ฐ€: ๋™์ผํ•œ ํ‚ค๋กœ ์—ฌ๋Ÿฌ ๊ฐ’์„ ์ €์žฅํ•  ์ˆ˜ ์—†์ง€๋งŒ, ์„œ๋กœ ๋‹ค๋ฅธ ํ‚ค์— ๋Œ€ํ•ด ๋™์ผํ•œ ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ๊ฒƒ์€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.
  • ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(1) ๋˜๋Š” O(log n)
  • ์ˆœ์„œ: Map์˜ ๊ตฌํ˜„์— ๋”ฐ๋ผ ํ‚ค-๊ฐ’ ์Œ์˜ ์ˆœ์„œ๋ฅผ ์œ ์ง€ํ•˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๊ณ , ์œ ์ง€ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋‹ค.

2. Map ๊ตฌํ˜„ ์ข…๋ฅ˜

(1) HashMap

  • ์ˆœ์„œ ์œ ์ง€ X
  • ํ‚ค - ๊ฐ’ ์Œ์œผ๋กœ ์ €์žฅํ•œ๋‹ค.
  • ๊ฒ€์ƒ‰ ์†๋„๊ฐ€ ๋น ๋ฅด๋‹ค.
// ์ƒ์„ฑ
import java.util.HashMap;

HashMap<String, Integer> hashMap = new HashMap<String, String>( ); 
๋˜๋Š”
HashMap<String, Integer> hashMap = new HashMap<>( );  // ์•ž์—์„œ ํƒ€์ž…์„ ์ •ํ–ˆ๋‹ค๋ฉด ๋’ค์—๋Š” ์ž‘์„ฑํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค.
// ๋ฐ์ดํ„ฐ ์‚ฝ์ž…
hashMap.put(Key, Value);
// ๊ฐ™์€ ๊ฐ’์ด ์žˆ๋‹ค๋ฉด ๋ฎ์–ด์“ด๋‹ค.
// ๋ฐ์ดํ„ฐ ๋ฐ˜ํ™˜
hashMap.get(key); 
// ํ‚ค์— ๋Œ€ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ํ‚ค๊ฐ€ ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด null์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ๋ฐ์ดํ„ฐ ์‚ญ์ œ
hashMap.remove(key); 
// ํ‚ค์™€ ํ‚ค์— ๋Œ€ํ•œ ๊ฐ’์„ hashMap์—์„œ ์‚ญ์ œํ•œ๋‹ค.
// ํ‚ค ์กด์žฌ ํ™•์ธ
hashMap.containsKey(key);
// ํ‚ค๊ฐ€ hashMap์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
// ์กด์žฌํ•˜๋ฉด true, ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ๊ฐ’ ์กด์žฌ ํ™•์ธ
hashMap.containsValue(value);
// ํ•ด๋‹น ๊ฐ’์ด hashMap์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.
// ์กด์žฌํ•˜๋ฉด true, ์กด์žฌํ•˜์ง€ ์•Š์œผ๋ฉด false๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ํฌ๊ธฐ 
hashMap.size();
// hashMap์— ์ €์žฅ๋œ ํ‚ค-๊ฐ’ ์Œ์˜ ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜ํ•œ๋‹ค.
// ๋ชจ๋“  ํ‚ค ๋ฐ˜ํ™˜
Set<String> keys = hashMap.keySet()
// ๋ชจ๋“  ๊ฐ’ ๋ฐ˜ํ™˜
Collection<Integer> values = hashMap.values();
// ๋ชจ๋“  ํ‚ค-๊ฐ’ ๋ฐ˜ํ™˜
Set<Map.Entry<String, Integer>> entries = hashMap.entrySet();

import java.util.HashMap;

public class Main {
    public static void main(String[] args) {
        HashMap<String, Integer> hashMap = new HashMap<>();
        hashMap.put("a", 1);
        hashMap.put("ab", 2);
        hashMap.put("abc", 3);
        
        System.out.println(hashMap);
    }
}

(2) LinkedHashMap

  • ์ˆœ์„œ ์œ ์ง€ O
  • ์ด์ค‘ ์—ฐ๊ฒฐ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ˆœ์„œ ์œ ์ง€
  • ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(1)
  • method : HashMap๊ณผ ๋™์ผ
import java.util.LinkedHashMap;

public class Main {
    public static void main(String[] args) {
        LinkedHashMap<String, Integer> linkedHashMap = new LinkedHashMap<>();
        linkedHashMap.put("a", 1);
        linkedHashMap.put("ab", 2);
        linkedHashMap.put("abc", 3);
        
        System.out.println(linkedHashMap); 
    }
}

(3) TreeMap

  • ํ‚ค๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
  • ์‹œ๊ฐ„ ๋ณต์žก๋„ : O(log n)
  • method : hashMap method +
// ๊ฐ€์žฅ ์ž‘์€ ํ‚ค ๋ฐ˜ํ™˜ (๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ)
treeMap.firstKey();
// ๊ฐ€์žฅ ํฐ ํ‚ค๋ฅผ ๋ฐ˜ํ™˜ (๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ)
treeMap.lastKey();

import java.util.TreeMap;

public class Main {
    public static void main(String[] args) {
        TreeMap<String, Integer> treeMap = new TreeMap<>();
        treeMap.put("a", 1);
        treeMap.put("ab", 2);
        treeMap.put("abc", 3);
        
        System.out.println(treeMap); 
    }
}




0๊ฐœ์˜ ๋Œ“๊ธ€