Study/java

[Java] HashMap get - key로 특정 값(value) 가져오기

 

HashMap에서 key를 이용해서 값을 가져오는 방법에 대해 설명드리겠습니다.

 

get 메소드 사용법

우선, 값을 가져올 Map을 생성합니다.

Map<String, Integer> birthByName = new HashMap<>();
birthByName.put("Kim", 1980);
birthByName.put("Lee", 2000);
birthByName.put("Park", 1999);

이름과 태어난 년도로 Map을 생성하였습니다.

 

Map에서 값을 가져오려면 get 메소드를 사용하면 됩니다.

System.out.println("birthByName.get(\"Kim\") = " + birthByName.get("Kim"));
System.out.println("birthByName.get(\"Kwon\") = " + birthByName.get("Kwon")); // null

get 사용 결과
get 사용 결과

get 메소드는 key를 받아서 key에 매핑된 값을 가져옵니다.

만약에 key가 없으면 null을 반환합니다.

 

 

 

 

예외 처리

get 메소드의 결과가 null로 나오면 NullPointerException 등의 문제가 발생할 수 있습니다.

예를 들면 다음과 같은 상황이 있습니다.

// NullPointerException 발생
int kwonBirth = birthByName.get("kwon");

이름으로 태어난 년도를 가져와서 int 변수에 할당하는 코드입니다.

kwon에 해당하는 키가 없어서 null이 반환되었고 int는 null을 사용할 수 없기때문에 NullPointerException이 발생합니다.

 

이런 상황을 방지하는 좋은 메소드가 있습니다.

 

containsKey

containsKey는 Map에 키가 있는지 없는지 체크하는 메소드입니다.

get으로 값을 가져오기 전 키가 있는지 체크하면 안전하게 값을 가져올 수 있습니다.

if (birthByName.containsKey("kwon")) {
	int kwonBirth = birthByName.get("kwon");
}

 

getOrDefault

getOrDefault는 key가 없는 경우에 가져올 값을 설정할 수 있는 메소드입니다.

다음과 같이 사용할 수 있습니다.

Integer kwonBirth = birthByName.getOrDefault("Kwon", 0);
System.out.println("kwonBirth = " + kwonBirth);

getOrDefault 결과
getOrDefault 결과

getOrDefault 메소드에 의해 0이 반환되었습니다.