본문 바로가기

Language/JAVA

[JAVA] 자바 HashMap 개념 및 주요 메서드

설명

Map인터페이스에 속해있는 컬렉션으로, 데이터들은 모두 (키, 값)의 1:1 구조로 저장된다.

- 키는 중복 불가

- 같은 키의 값을 삽입하려고하면 해당 키의 값이 변경

ex) ('A', 10)을 넣은 후 ('A', 5)를 넣는다면 키는 중복 불가하기 때문에 A의 값이 10에서 5로 변경되어 저장된다.

 

 

HashMap 선언

HashMap<Type, Type> hm = new HashMap<Type, Type>();

Type 위치에 Character, Integer, String 등을 넣어 사용할 수 있다.

ex) 

 

 

주요 메소드

  • put() : 값 추가
  • remove() : 값 삭제
  • clear() : 모든 키 값 삭제
  • size() : 크기 구하기
  • containsKey() : 키 값을 가지고 있는지 확인. 가지고 있다면 true, 없다면 false 반환
  • keySet() : 저장된 키 값 확인 -> 전체 출력
  • get() : 값 출력
  • entrySet() : 저장된 key와 value 값 확인 -> 전체 출력
  • getOrDefault() : key가 존재한다면 찾는 key의 value를 반환하고 없거나 null이면 default 값을 반환

 

 

 

 

 

 

예시

put() - HashMap 값 추가

import java.util.HashMap;

public class example {
    public static void main(String[] args) {
        HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언

        hm.put('A', 1);
        hm.put('B', 2);
        hm.put('C', 3);
        System.out.println(hm);
    }
}

결과

 

 

 

remove(), clear() - HashMap 값 삭제

import java.util.HashMap;

public class example {
    public static void main(String[] args) {
        HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언

        hm.put('A', 1);
        hm.put('B', 2);
        hm.put('C', 3);
        System.out.println(hm);

        hm.remove('C');
        System.out.println(hm);
        System.out.println(hm.remove('B')); // remove()는 value를 리턴

        hm.clear();
        System.out.println(hm);
    }
}

결과

 

 

 

size() - HashMap 크기 구하기

import java.util.HashMap;

public class example {
    public static void main(String[] args) {
        HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언

        hm.put('A', 1);
        hm.put('B', 2);
        hm.put('C', 3);
        System.out.println(hm);
        System.out.println("size : " + hm.size());

        hm.remove('C');
        System.out.println(hm);
        System.out.println("size : " + hm.size());
    }
}

결과

 

 

 

containsKey() - HashMap 안에 key 있는지 없는지 확인

import java.util.HashMap;
import java.util.Map;

public class example {
    public static void main(String[] args) {
        HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언

        hm.put('A', 1);
        hm.put('B', 2);
        hm.put('C', 3);
        System.out.println(hm.containsKey('A'));
        System.out.println(hm.containsKey('D'));
    }
}

 

 

 

get(), keySet() - HashMap 값 출력

import java.util.HashMap;

public class example {
    public static void main(String[] args) {
        HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언

        hm.put('A', 1);
        hm.put('B', 2);
        System.out.println(hm.get('A'));
        System.out.println(hm.get('B'));

        for(char x : hm.keySet()) {
            System.out.println("[Key]:" + x + " [Value]:" + hm.get(x));
        }
    }
}

결과

 

 

 

entrySet() - HashMap 전체 출력

import java.util.HashMap;
import java.util.Map;

public class example {
    public static void main(String[] args) {
        HashMap<Character, Integer> hm = new HashMap<Character, Integer>(); // HashMap 선언

        hm.put('A', 1);
        hm.put('B', 2);
        hm.put('C', 3);
        for (Map.Entry<Character, Integer> entry : hm.entrySet()) {
            System.out.println("[Key]:" + entry.getKey() + " [Value]:" + entry.getValue());
        }
    }
}

Map으로의 마이그레이션이 필요하다.

 

결과

 

 

 

getOrDefault() - key 존재 유무에 따라 value를 반환하거나 default 값을 반환

HashMap을 사용해서 푸는 코딩 테스트에서 중요하니 꼭 알아두자 !

아래 코드는 HashMap과 getOrDefault()를 이용해 배열에 있는 문자를 key에, key의 개수를 value에 넣는 코드이다.

import java.util.HashMap;
import java.util.Map;

public class example {
    public static void main(String[] args) {
        char[] arr = { 'A', 'C', 'B', 'A', 'C', 'C'};
        HashMap<Character, Integer> hm = new HashMap<>();

        for(char key : arr) {
            hm.put(key, hm.getOrDefault(key, 0) + 1);
        }
        System.out.println("출력 결과 : " + hm);
    }
}

 

결과