Home

Jeong-Yoon

19 Feb 2020

Map

Map

  • Map<K, V>
    • K : Key 타입, V : Value 타입
  • 주요 메소드
    • V put(K key, V value) : 데이터 입력
    • V get(K key) : 특정 key에 대한 value를 추출해라
    • V remove(Object key) : 특정 key에 대한 map 요소를 삭제해라
  • key의 중복을 허용하지 않는다.
    • map.containsKey(key) : 해당 key가 존재하는 지 확인해주는 메소드
  • value는 중복 허용
  • 동일 키에 대한 입력은 가능하지만 새로운 값이 들어가는 것이 아니라 업데이트 형식.

HashTable

  • null을 허용하지 않는다.
  • 동기화가 되어있다.
    • 하나의 자원을 a가 사용하고 있으면 b는 접근 할 수 없다.

HashMap

  • null 허용, 동기화가 되어 있지 않음.
    • 자원 공유의 문제점, 멀티 쓰레드 환경에서 조심해야 한다.

entrySet(), keySet()

  • Map의 값을 전체 출력할 때 사용하는 메소드

entrySet()

  • Set<Map.Entry<K, V» entry = map.entrySet();
  • key와 value 모두 필요한 경우 사용
  • entrySet() 예시
    Set<Entry<String, String>> entries = map.entrySet();
    for (Entry<String, String> entry : entries) {
      System.out.println("Key: " + entry.getKey() + ", Value: " + entry.getValue());
    }
    

    keySet()

  • key의 값만 필요한 경우 사용
  • keySet() 예시
    for(String key : map.keySet()){
      String value = map.get(key);
      System.out.println("Key: " + key + ", Value: " + value);
    }
    

Map과 iterator

  • Map은 Collection에 포함되어 있지 않기 때문에 Iterator를 바로 사용할 수 없다.
  • iterator를 사용하고 싶다면 keySet()이나 entrySet()을 이용해야 한다.
  • entrySet() 이용 예시
    • Generic O
        Map<String, String> map = new HashMap<String, String>();
        Iterator<Map.Entry<String, String>> entries = map.entrySet().iterator();
        while (entries.hasNext()) {
        Map.Entry<String, String> entry = entries.next();
        System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
        }
      
    • Generic X
        Iterator entries = map.entrySet().iterator();
        while(entries.hasnext()){
        Map.Entry entry = (Map.Entry)entries.next();
        System.out.println("Key = " + entry.getKey() + ", Value = " + entry.getValue());
        }
      
  • keySet() 이용 예시
      Iterator<String> iterators = map.keySet().iterator();
      while(iterators.hasNext()){
          String key = iterators.next();
          String value = map.get(key);
          System.out.println("Key: " + key + ", Value: " + value);
      }
    

Til next time,
Jeong-Yoon at 00:00

scribble