Algorithm

[Algorithm] Map.getOrDefault

dev_Step 2022. 5. 20. 10:34

프로그래머스를 통해서 신고자 누적 알고리즘을 공부하면서 알게된 매서드이다.

 

Map의 메서드중 하나이며   매개변수로 ( Map의 key값과, Default 값이 들어간다.)

return 값은 Set<String> 값이다.

 

아래를 보면 name 이라는 String[] 이있고

이름을 key 값으로 map에 넣고 있다. 이때 만약 key값이 이미 들어가있으면 해당 value 값을 1씩 증가

시켜주는 for문을 돌리고 있다.

이때 map.getOrDefault(name[i], 0)+1 을 통해서 해당 key값이 이미 들어가있다면 해당 key값의 value를 가지고 나오게 되고,,  key 값이 map에 존재하지 않다면 0이 return되며 +1 하여 1이 출력되게 된다.

 

처음에 이 메서드가 있는줄 모르고

replace를 통해서 해당 key 값에,   해당 key값을 가지고와서 +1 을 해주는 방식으로 코딩했었는데

getOrDefault 를 통해서 더 간결하게 표현할수 있다.

 

//<<Set인데 값이 Entry<K,V>형태>>

map.entrySet();

반환값이 Set<Entry<String,Integer>> 이므로 

for문을 통해서 돌리면  map.entrySet()의 값은 한개의 요소씩 나오게 되므로

Entry<String,Integer>의 값이 나오게 된다.

따라서 아래처럼 향상된 for 문을 통해서 map에 들어있는모든 요소를 확인할 수 있다.

for(Map.Entry<String, Integer>> entry : map.entrySet()){

 entry.getkey();

 entry.getvlaue();

}

 

또한 map을 Collection으로 변경할 수 있는데

map.values(); 를 통해서 Collection으로 형태변환할수 있다.

Collection으로변환 하면 Streams를 통해서 Map을 처리할 수 있다.

 

Stream관련해서는 아래를 참조하여 공부해야 할것 같다.

https://futurecreator.github.io/2018/08/26/java-8-streams/