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 메소드는 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 메소드에 의해 0이 반환되었습니다.