[JAVA] 알고리즘 풀 때 HashMap 사용법 정리
반응형
알고리즘 풀 때 HashMap을 사용해야 할 때가 있다.
주로 중복을 제거하거나, key에 따라 value값을 불러와야 할 때 사용한다.
자세한 설명은 주석 참조@@
//라이브러리
import java.util.Map;
import java.util.Map.Entry;
//key-value 자료형 선언
HashMap<String, Integer> h = new HashMap<>();
//key, value값을 넣는다.
h.put("Hello", 0);
//key, value값을 넣는다. 이때 key값이 없으면 0, 있으면 그 value값의 +1을 하는 코드
h.put(s, h.getOrDefault(s, 0) + 1);
//key "x"의 value를 반환
int x = h.get("x");
//key값만 불러오는 경우
for (String j : h.keySet())
s = j;
//value값만 불러오는 경우
for (Integer j : h.values())
max = Math.max(max, j);
// key와 value를 둘 다 불러와야 하는 경우
for (Entry<String, Integer> entry : h.entrySet())
if (max >= 2 && entry.getValue() == max)
list.add(entry.getKey());
//key값이 포함되어 있는지 판별, true, false 리턴
if (h.containsKey("x"))
f = true;
//value값이 포함되어 있는지 판별, true, false 리턴
if (h.containsValue(1))
f = true;
반응형
이외에도 다른 자료구조에 있는 size, isEmpty, putAll, clear, remove 등이 있다.
HashMap의 시간복잡도는 다음과 같다.
get : O(1)
containsKey : O(1)
next : O(h/n) h는 테이블 용량
key값에 따라 바로 value값을 찾을 수 있는 구조이기 때문에 사용이 까다롭지만 시간복잡도가 아주 작은 편이라서 알고리즘 문제를 풀 때 유용하게 사용할 수 있다!!
반응형
'Algorithm' 카테고리의 다른 글
[JAVA] Cache 그리고 Equals 헷갈리는 Integer와 int에 대하여 (0) | 2024.07.10 |
---|---|
[JAVA] n진수를 10진수로, 10진수를 n진수로 (십진수 등 변환하는 법) (0) | 2024.06.26 |
[JAVA] 프로그래머스 [3차] 방금그곡 (0) | 2023.09.16 |
[JAVA] 프로그래머스 [1차] 뉴스 클러스터링 (0) | 2023.09.06 |
[JAVA] sort 할 때 정렬 기준 만드는 법(feat. Comparator) (0) | 2023.09.02 |