Programming Language/Java

[Java] Map 계열 메소드 - get() vs. containsKey()

Ma_Sand 2023. 9. 28. 12:41
반응형

get()

get()은 key에 해당하는 value를 가져올 때 사용한다.

public class getMethod {
	public static void main(String[] args) {
    	HashMap<String, String> hmap = new HashMap<>();
        hmap.put("fruits", "과일");
        hmap.put("apple", "사과");
        
        System.out.println(hmap.get("fruits"));  // 과일
        System.out.println(hmap.get("apple"));  // 사과
        
        System.out.println(hmap.get("banana"));  // NullPointerException 발생
    }
}

hmap에 put()으로 key와 value(fruits:과일, apple:사과)를 담았다.

apple이라는 key의 value를 가져오고 싶으면 hmap.get("apple")으로 가져오면 된다.

 

그런데 hmap.get("banana")를 사용할 경우 hmap에 banana라는 키가 없어 NullPointerException이 발생한다.

그래서 예외 처리를 따로 해주거나 getOrDefault()를 사용하여 null 대신 default값을 반환케 할 수 있다.

public class getOrDefaultMethod {
	public static void main(String[] args) {
    	Map<String, String> map = new HashMap<>();
        map.put("fruits", "과일");
        map.put("apple", "사과");
        
        System.out.println(map.getOrDefault("fruits", "맛있다"));  // 과일
        System.out.println(map.getOrDefault("apple", "맛있다"));  // 사과
        
        System.out.println(map.getOrDefault("banana", "맛있다"));  // 맛있다
    }
}

map.getOrDefault(K, default값), 즉 map.getOrDefault("banana", "맛있다")로 사용하여 map에 담겨있지 않은 banana라는 키의 value를 가져오려 할 때 '맛있다'라는 기본값을 출력시킨다.

 

 

 

containsKey()

containsKey()는 Map에 해당 key가 있는지 true/false로 반환한다. (boolean 타입)

public class containsKeyMethod {
	public static void main(String[] args) {
    	HashMap<String, String> hmap = new HashMap<>();
        hmap.put("fruits", "과일");
        hmap.put("apple", "사과");
        
        System.out.println(hmap.get("fruits"));  // true
        System.out.println(hmap.containsKey("apple"));  // true
        
        System.out.println(hmap.containsKey("banana"));  // false
    }
}

apple이라는 key가 있는지 확인하고 싶을 때 hmap.containsKey("apple")를 사용한다.

apple이라는 key가 있다면 true로 반환한다.

 

이때 hmap에 담겨있지 않은 key, 즉 fruits와 apple을 제외한 다른 key를 containsKey()로 확인하면 해당 key가 없기 때문에 false로 반환된다.

 

반응형