[알고리즘] HashMap 사용법

김민수·2022년 12월 8일
0

알고리즘은 아니지만 코딩테스트 문제를 풀다가 자주 사용하는 HashMap자료구조를 사용할때마다 사용법을 검색해서 보곤 했는데 확실하게 문제를 풀면서 자주 사용하는 메소드를 정리하도록 하자!

Map특징

  • Map은 기존의 JFC와는 다르게 Key, Value가 존재한다.

  • Key는 중복을 허용하지 않는 ID값이며, Value는 중복을 허용하는 Data 값이다.

  • 또한 기본적으로 Map은 순서를 유지하고 있지 않는다.

  • Map이라는 인터페이스를 통해 자바에서는 4가지의 Map이 있다.

  1. 알고리즘을 이용한 HashMap
  2. HashMap의 이전 버전인 HashTable(Vector와 ArrayList 같은 관계)
  3. 이진 탐색 트리를 사용하여 키를 오름차순 정렬까지 해주는 TreeMap
  4. Map에 순서를 부여해주는 LinkedHashMap

HashMap선언

HashMap<(type)K,(type)V> 변수명 = new HashMap<>();

HashMap값 삽입

map.put(K,V) //가장 기본적인 삽입법
map.put(K,getorDefault(K,0)+1) // 자주 사용하는데, K값이 그 전에 없으면 1, 있으면 계속 추가. 

HasMap값 출력

for(Map.Entry<K,V> 변수명 : 선언했던 HashMap 변수명.entrySet()){
	변수명.getKey() // Key값 
    변수명.getValue() //Value값
}
변수명.keySet() // Key값 리스트들
변수명.values() //Value값 리스트들
변수명.get(K) // key에 해당하는 value값

HashMap 정렬

Key값 정렬

Map<String, String> map = new HashMap<>(); // map선언
List<String> keyList = new ArrayList<>(map.keySet()); // key값들에대해 리스트 생성
keyList.sort((s1, s2) -> s1.compareTo(s2));

위의 코드에서 Comparator (s1, s2)->s1.compareTo(s2)는 String::compareTo로 대체가능 하다한다.

Value값 정렬

  Map<String, String> map = new HashMap<>(); // map선언
  List<String> valueList = new ArrayList<>(map.values());
        valueList.sort(String::compareTo);
profile
Hello Minsu World

0개의 댓글

관련 채용 정보