프로그래머스 문제를 풀던 도중 효율성으로 인해서 합격이 되지 않는 문제가 생겼다.
그래서 다른 사람들의 코드들을 보면서 하나 배운게 있다.
HashMap의 getOfDefault() 이다.
Integer getOrDefault(Object key, Integer defaultValue)
해당 key값이 존재하면 key의 value를 반환하고 존재하지 않으면 기본값을 반환한다.
이 메소드를 이용해서 배열에서 중복되는 값이 몇 개 있는지 확인할 수 있는 효율적인 알고리즘을 작성할 수 있다는걸 알았다.
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
String[] arr= {"aaa","aaa","bbb","ccc","ddd","ccc","eee"};
Map<String, Integer> map = new HashMap<String, Integer>();
for(String key : arr) {
map.put(key, map.getOrDefault(key, 0)+1);
}
System.out.println(map);
}
}
출력결과-----------------------------
{aaa=2, ccc=2, bbb=1, eee=1, ddd=1}