[HashMap] HashMap

김우진·2022년 7월 26일
0

알고리즘

목록 보기
3/8
post-thumbnail

HashMap

  • Map Interface 구현
  • 데이터를 key와 value의 쌍으로 저장한다.
  • 순서가 없다.(순서를 유지하려면, LinkedHashMap 클래스를 사용하면 된다.)
  • key는 중복이 안되고, 값은 중복 가능하다.
  • key와 value 한 쌍을 entry라 부른다.

HashMap은 hashing 기법으로 데이터를 저장하여 데이터가 많아도 검색이 빠르다.

hashing 기법

해시함수를 이용해서 데이터를 해시 테이블(hash table)에 효율적으로 저장하고 읽어오는 것을 말한다.

Hash Table
배열과 링크드 리스트가 조합된 형태
배열의 장점인 접근성과 링크드 리스트의 장점인 변경이 용이한 것을 합친 형태이다.
Hash Table

HashMap map = new HashMap();
map.put("MyId", "abc");
map.put("MyPassword", "1234");
map.put("OtherPassword", "1234"); // value 중복 허용

HashMap 구현 코드

public class HashMap extends AbstractMap implements Map, Cloneable, Serializable {
	transient Entry[] table;
    ...
    static class Entry implements Map.Entry {
    	final Object key;
    	Object value;
    	...
    }
}

기본 HashMap 내장 method

put()

  1. 없는 key면 데이터 저장
  2. 있는 key면 데이터 변경
map.put("test", "1234");
map.put("check", "1111");
map.put("check", "1234");

이렇게 넣으면 3번째 줄 put은 삽입이 아닌 변경이 이루어져 아래와 같은 결과를 낸다.

HashMap

알고리즘 문제에서 자주 쓰이는 HashMap 내장 method

getOrDefault(key, default)

key 값으로 get을 해오고 없다면 default 값으로 설정해서 삽입하는 method
값 counting하는 경우에 많이 쓰임

size()

Map의 크기를 알아내는 method
주로 경우의 수를 찾아야 하는 문제에 많이 쓰임

썸네일 출처

Pixabay로부터 입수된 mohamed Hassan님의 이미지 입니다.

0개의 댓글