Hash Map이란 무엇인가요?

2020-03-13

Hash Map

-java.util.HashMap

HashMap 은 Map 인터페이스 계열의 대표적인 클래스입니다.

키(Key)와 값(Value)으로 데이터를 관리하며 키를 이용하여 데이터를 추출할 수 있습니다.

HashMap에서 알아 두어야 하는 메서드는 데이터를 집어 넣을 때와 데이터를 추출할 때 사용하는 메서드입니다.

먼저 다음과 같이 HashMap 객체를 생성합니다.

//HashMap 객체 생성
Map<String, Integer> map = new HashMap<String,Integer>();

그리고 HashMap에 데이터를 추가하기 위해서는 put() 메서드에 키와 값을 매개변수로 넣어주면 됩니다.

첫 번째 매개변수가 키이며, 두 번째 매개변수가 값에 해당합니다.

//HashMap 객체에 데이터 삽입
map.put("홍길동",new integer(1));

데이터 추출할 때에는 get() 메서드와 키를 이용해서 추출할 수 있습니다.

//키를 이용한 데이터 추출
System.out.println(map.get("홍길동"));

키를 이용해서 쉽게 검색하고자 한다면 HashMap을 이용하면 됩니다.

출처: https://firedev.tistory.com/entry/Java-HashMap과-Hashtable-의-차이점 [개발노트]

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

class Solution {
    public String solution(String[] participant, String[] completion) {
        Map<String, Integer> players = new HashMap<>();
        for(String p : participant)
        {
            players.put(p,players.getOrDefault(p,0)+1);
        }
        for(String p : completion)
        {
            Integer count = players.get(p);
            if(count ==1)
            {
                players.remove(p);
            }
            else{
                players.put(p,count - 1);
            }
        }
        return players.keySet().iterator().next();
    }
}

프로그래머스의 완주하지 못한 선수 문제입니다.

Hash Map을 이용하여 풀어낸 문제로 String 과 Integer를 키 값과 value로 받습니다.

마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수들의 이름이 담긴 배열 completion이 주어질 때,

완주하지 못한 선수의 이름을 return 하도록 합니다.