어제 오늘 내일

[Java HashMap] get() vs getOrDefault() 차이와 활용법 본문

IT/Java

[Java HashMap] get() vs getOrDefault() 차이와 활용법

hi.anna 2025. 10. 10. 07:41

HashMap에서 값을 꺼낼 때 가장 기본적으로 쓰는 메소드는 get()입니다. 하지만 키가 없을 때 null을 반환하기 때문에 NPE(NullPointerException) 위험이 있습니다. 이런 경우를 대비해 getOrDefault() 메소드가 추가되었습니다. 두 메소드의 차이와 활용법을 정리해봅니다.

 

1. get()

import java.util.HashMap;

public class HashMapGet {
    public static void main(String[] args) {
        HashMap<String, Integer> scores = new HashMap<>();
        scores.put("kim", 90);

        System.out.println(scores.get("kim"));  // 90
        System.out.println(scores.get("lee"));  // null
    }
}

get()은 키가 존재하면 값을 반환하고, 없으면 null을 반환합니다. 따라서 null 체크를 반드시 해줘야 안전합니다.

 

2. getOrDefault()

import java.util.HashMap;

public class HashMapGetOrDefault {
    public static void main(String[] args) {
        HashMap<String, Integer> scores = new HashMap<>();
        scores.put("kim", 90);

        System.out.println(scores.getOrDefault("kim", 0));  // 90
        System.out.println(scores.getOrDefault("lee", 0));  // 0
    }
}

키가 없을 경우 null 대신 지정한 기본값을 반환합니다.

덕분에 if (map.get(...) == null) 같은 방어 코드를 줄일 수 있습니다.

 

3. 활용 예제: 빈도수 세기

import java.util.*;

public class HashMapFrequency {
    public static void main(String[] args) {
        String text = "apple banana apple cherry banana apple";
        String[] words = text.split(" ");

        Map<String, Integer> freq = new HashMap<>();
        for (String word : words) {
            int count = freq.getOrDefault(word, 0);
            freq.put(word, count + 1);
        }

        System.out.println(freq);
    }
}

실행 결과

{banana=2, cherry=1, apple=3}

단어가 없을 때 기본값 0을 바로 반환받아, 코드가 깔끔해집니다.

 

결론

  • get() → 키 없을 때 null 반환 (직접 null 체크 필요)
  • getOrDefault() → 키 없을 때 지정한 기본값 반환 (방어 코드 단순화)
  • 빈도 계산, 캐싱 기본값 설정 등에 자주 활용됨

 

반응형
Comments