Language/Java
[Java] Map - getOrDefault()
anxi
2024. 4. 14. 17:38
최근 프로그래머스를 풀던 중 모르는 메서드가 있었다,,
(https://school.programmers.co.kr/learn/courses/30/lessons/42576)
for (String c : completion) {
hashMap.put(c, hashMap.getOrDefault(c, 0) + 1);
}
바로 "getOrDefault()" 메서드이다.
getOrDefault(Object key, V defaultValue)
자바 공식 문서에서는 위와 같이 설명하고 있다.
아래 코드는 Map 인터페이스에 구현된 default 코드이다.
default V getOrDefault(Object key, V defaultValue) {
V v;
return (((v = get(key)) != null) || containsKey(key))
? v
: defaultValue;
}
위의 정보들로 정리해보면 다음과 같다.
- map에 key가 존재할 경우, 구체적인 key와 매핑되는 값(value)을 반환한다.
- map에 key가 존재하지 않으면, defaultValue를 반환한다.
적용
for (String c : completion) {
hashMap.put(c, hashMap.getOrDefault(c, 0) + 1);
}
위 코드에 대한 정보는,
- completion 배열에 있는 각 요소를 map에 넣는데
- map에 중복되는 key가 있으면, 그 key에 해당하는 값에 1을 더한다.
- map에 중복되는 key가 없으면, 첫 등장한 것이므로 1을 넣는다.
위 정보를 바탕으로 코드를 이해해보면,
- key : completion 배열의 값
- value :
- key가 존재할 경우 : 현재 map에 존재하는 c의 값의 1을 더한다.
- key가 존재하지 않을 경우 : 0에 1을 더한다.
결론
- 중복되는 key에 value에 특정 숫자를 더해주거나 빼줄 때 이용하면 용이할 것 같다.