Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- springdoc
- 용돈관리
- docker
- 백준
- 추억점수
- 대충 만든 자판
- 수들의 합
- call by value
- 자바
- IoC container
- springboot
- 병합정렬
- 크레인인형뽑기게임
- 스웨거
- 6236
- java
- vue3
- 헤이로라
- Spring
- getOrDefault
- 1032
- swagger3
- Baekjoon
- 프로그래머스
- vue-cli
- 2178
- 2751
- Di
- jvm
- Spring Security
Archives
- Today
- Total
개발쿠키
[Java]Map getOrDefault 본문
getOrDefault
프로그래머스 문제를 푸는 중 getOrDefault라는 api를 접했다. 해당 api는 Java 8 에서 추가된 Collection API 중 하나이다.
Map에 추가된 API로 아래 코드와 같이 구현되어 있다.
default V getOrDefault(Object key, V defaultValue) {
V v;
return (((v = get(key)) != null) || containsKey(key))
? v
: defaultValue;
}
1. 임시변수 v를 선언한 후 get(Key)를 통해 얻은 값을 저장한 후 null이 아닌지를 확인한다.
2. contains(key)를 통해서 해당 키가 존재하는지 다시 한번 확인
3. 둘 다 false일 경우 파라미터로 넘긴 defaultValue가 return 되고 만약 true일 경우 v 즉 get(key) 한 값이 return 된다.
예제 코드
String[] strArr = {"A", "a", "B","b","C","C"};
HashMap<String, Integer> map = new HashMap<>();
for (String s: strArr) {
map.put(s, map.getOrDefault(s, 0) + 1);
}
System.out.println("===" + map);
//{A=1, a=1, B=1, b=1, C=2}
foreach문을 순차적으로 돌면서 보자
1번째 - map.put("A", map.getOrDefault("A",0) + 1) = A라는 키 값을 put 하기전 getOrDefault를 통해 A의 값과 키를 확인한 후 없기 때문에 0을 retrun 한 후 +1을 하기 때문에 "A" : 1 이라는 key-value가 들어간다. \
2번째 - map.put("a", map.getOrDefault("a",0) + 1) = 1번째와 동일하게 a라는 키 값이 존재하지 않았기 때문에 0을 return 후 +1 된 value가 들어간다.
위와같이 돌면 최종적으로 {A=1, a=1, B=1, b=1, C=2}라는 key-value 쌍들이 들어가게 된다.
'개발 > java' 카테고리의 다른 글
[JAVA]클래스, 객체, 인스턴스 (0) | 2023.07.20 |
---|---|
[JAVA]Call By Reference, Call By Value (0) | 2023.07.14 |
[JAVA]JVM (0) | 2023.07.06 |
[JAVA]String (0) | 2023.07.04 |
[JAVA]JVM, JRE, JDK (0) | 2023.07.03 |