일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- 한국대학생it경영학회
- JPA
- 도메인 주도 개발 시작하기
- 큐시즘
- Spring
- 30기
- reactive operaton
- 최범균
- rabbitmq-delayed-message-exchange
- Spring Batch
- java
- 자바 ORM 표준 JPA 프로그래밍
- ddd
- delayed message plugin
- 영속성
- 교육기획팀
- jdbc
- RESTClient
- Domain Driven Design
- 교육기획팀원
- GitHub Actions
- JPQL
- 객체지향 쿼리 언어
- scheduling messages with rabbitmq
- kusitms
- cicd
- 자동처리
- 밋업프로젝트
- springboot
- 이펙티브자바
Archives
- Today
- Total
코딩은 마라톤
[Java] Map - getOrDefault() 본문
최근 프로그래머스를 풀던 중 모르는 메서드가 있었다,,
(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에 특정 숫자를 더해주거나 빼줄 때 이용하면 용이할 것 같다.
'Language > Java' 카테고리의 다른 글
[이펙티브자바] 아이템 10, 11, 12 요약 정리 (0) | 2024.06.01 |
---|---|
[이펙티브자바] 아이템 7, 8, 9 요약 정리 (0) | 2024.05.30 |
[이펙티브자바] 아이템 4, 5, 6 요약 정리 (0) | 2024.05.29 |
[이펙티브자바] 아이템1, 2, 3 요약 정리 (0) | 2024.05.28 |
[Java] 불변객체(Immutable Object) (1) | 2024.04.16 |