[JAVA] Map에 Key가 같으면 Value의 값 1 증가

2023. 5. 25. 23:30JAVA

코드

import java.util.HashMap;
import java.util.Map;

public class getOrDefaultEx {
    public static void main(String[] args) {
        String[] str = {"AB", "BC", "EF", "AB", "EF"};
        Map<String , Integer> map = new HashMap<>();

        for (String s : str) {
            map.put(s, map.getOrDefault(s,0)+1);
        }
        System.out.println("map = " + map);
    }
}

 

 

결과

map = {AB=2, BC=1, EF=2}

 

설명

getOrDefault 의 파라미터는 (Key, DefaultValue)이다. 

getOrDefault(Key,DefaultValue) 이렇게 있을 때, 

getOrDefault는 key를 검색하고 만약 키가 있다면 key 값을 반환, 없다면 DefaultValue를 반환한다.

그래서 위 코드로 보면 str 배열을 map에 넣을 때 처음에는 ket값에 AB를 넣어주고, value에 getOrDefault 를 넣었다.

이때 map에는 AB라는 키가 없으므로 DefaultValue값인 0을 반환한다.

그 뒤에 +1이 있으므로 최종 value의 값은 1이 된다.

이렇게 3번째 EF까지 진행 후 다시 AB가 나온다.

이때 map에는 이미 AB라는 키가 있으므로 value는 .getOrDefault 에서 AB키의 value를 반환한다.

getOrDefault 에서 반환한 value는 1이다.

그 뒤에 +1 이 있으므로 key는 AB에 value 값은 2가 된다. 그 뒤 EF도 마찬가지

'JAVA' 카테고리의 다른 글

[JAVA] List에 Stream으로 값 넣기  (0) 2023.06.25
[JAVA] JAVA String List를 String 배열로 변환  (0) 2023.05.23