알고리즘 - Hash Map

김명식·2023년 5월 9일
0

알고리즘

목록 보기
9/14
post-thumbnail

Hash Map

해시맵을 알고리즘으로 다뤄야하나 잠깐 고민했는데,
알고리즘 문제를 해결할 때 워낙 많이 사용해서 넣기로 결정했다.

HashMap은 키(key)와 값(value)을 저장하며 키를 이용하여 값을 검색하고 가져온다.
또한 키와 값이 모두 객체로 저장되며,
각각의 키와 값은 제네릭으로 선언하여 타입을 저장할 수 있다.

HashMap<String, Integer> map = new HashMap<String, Integer>();

HashMap에서 대표적으로 사용하는 메서드는 다음과 같다.

map.put("apple", 1);

key : apple
value : 1
위와 같은 쌍으로 HashMap에 저장한다는 의미이다.


int nubmer = map.get("apple");

key가 apple인 값을 가져온다.
apple의 value로 1을 저장했으니 number에 1을 저장한다.


map.remove("apple");

key가 apple인 값을 삭제한다.


for (String Key : map.keySet()) {
	int value = map.get(Key);
    System.out.println("Key : " + Key);
    System.out.println("Value : " + value);
}

map.keySet()굉장히 자주 사용하는 함수중 하나로,
해시맵 전체를 탐색하며 Key를 return한다.
즉, 위와 같이 for문을 돌면 맵에 있는 모든 Key를 조회하여 value를 조회할 수 있는 것.


HashMap<String, Integer> map = new HashMap<>();
map.put("A", 1);
map.put("B", 2);

int value = map.getOrDefault("C", 0);
System.out.println(value); // 0 

value = map.getOrDefault("B", 0);
System.out.println(value); // 2

getOrDefault메서드는 주어진 키에 해당하는 값이 존재하는 경우 그 값을 반환하고,
존재하지 않을 경우 디폴트 값을 반환한다.
위 예제에서
존재하지 않는 C 값을 조회하는 경우 Default 값인 0을 return하고
존재하는 B값을 조회하는 경우 그에 해당하는 value인 2를 return한다.


아래는 HashMap을 사용하는 경우가 잦은 동일한 요소 카운트 코드이다.

-  Java Code

int nums[] = {3, 3, 3, 2, 2, 4};

HashMap<Integer, Integer> map = new HashMap<>();

for (int i = 0; i < nums.length; i++) {
	int count = maps.getOrDefault(nums[i], 1);
    maps.put(nums[i], count);
}

for (Integer Key : map.keySet()) {
	int value = map.get(Key);
    System.out.println("Key : " + Key);
    System.out.println("Value : " + value);
}
profile
BackEnd & AWS Developer

0개의 댓글