반응형
HashMap에서 특정 key가 존재하는지를 확인해야 할 때가 있다.
이 때는 2가지 방법이 있다.
- Map.containsKey()
- Map.get()
하단에서 설명하겠지만 두 가지 방법 중 첫번째 방법인 Map.contatinsKey() 메서드를 사용하는 것을 추천한다.
우선 차례로 알아보자.
1. Map.containsKey()
Map의 containsKey() 메서드는 파라미터로 입력 받은 값과 일치하는 key가 있으면 true를, 없으면 false를 리턴한다.
public boolean containsKey(Object key)
import java.util.HashMap;
import java.util.Map;
public class CheckExistKeyInHashMap {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "One");
map.put(2, "Two");
map.put(3, "Three");
map.put(null, "Null");
System.out.println(map.containsKey(1)); // true
System.out.println(map.containsKey(5)); // false
System.out.println(map.containsKey(null)); // true
}
}
2. Map.get()
get() 메서드는 key값으로 Map의 value를 찾을 때 사용된다.
파라미터로 입력 받은 값이 Map에 존재하면 해당 value를 리턴하고, 존재하지 않는다면 null을 리턴한다.
public V get(Object key)
import java.util.HashMap;
import java.util.Map;
public class CheckExistKeyInHashMap {
public static void main(String[] args) {
Map<Integer, String> map = new HashMap<Integer, String>();
map.put(1, "One");
map.put(2, "Two");
map.put(3, "Three");
map.put(4, null);
System.out.println(map.get(1) != null ? true : false); // true
System.out.println(map.get(5) != null ? true : false); // false
System.out.println(map.get(4) != null ? true : false); // false
}
}
이렇게 Map.get() 메서드를 사용해 특정 key가 Map에 존재하는지 체크할 수 있다.
- Map.get() 의 한계
하지만 이 방법에는 약간의 한계? 이슈?가 있다.
앞서 말했듯 key가 Map에 존재하지 않으면 null을 리턴한다는 점이 포인트이다.
위 예제를 보면 map.get(5)를 하면, 5라는 key는 존재하지 않으므로 null을 리턴한다.
map.get(4)를 하면 4라는 key가 존재하지만 그 값이 null 이므로 null을 리턴한다.
이 예제와 같이 value에 null이 허용되면 실제 key가 존재하는지에 대해 정확하게 알 수 없다는 한계가 있다.
따라서 Map에 key가 존재하는지 확인하기 위해서는 containsKey() 메서드를 사용하는 것을 추천한다.
반응형
'Java' 카테고리의 다른 글
[Java] JVM(Java Virtual Machine)이란? (0) | 2023.08.22 |
---|---|
[Java] 코드 특정 구간의 실행 시간 구하기 (0) | 2023.06.14 |
[Java] new ArrayList<>() 와 Arrays.asList() 차이점 및 비교 (0) | 2022.12.26 |
[Java] HashMap과 HashSet의 차이 (0) | 2022.12.23 |
[Java] 제어자(modifier) (2) - 접근 제어자, 그 외 제어자 (0) | 2022.08.06 |