🐤 study/Java

[Java] HashMap정리

budtree 2022. 2. 15. 14:45
🔥 이 포스팅은 노마드코더, 자바의정석님의 영상을 보고 간결하게 정리했습니다.

HashMap은 key-value 시스템으로 Map 인터페이스를 구현한 대표적인 컬렉션 클래스다.

 

🐤 HashMap과 List 비교

List : O(N) - 일일히 아이템을 탐색하는 구조(아이템이 많아질수록 시간이 증가)

HashMap : O(1) - 찾는데 단 1 스텝만 들어감 => 매우 빠름!

 

🐤 해싱(Hashing)이란?

hash function을 통해 data를 저장하고 읽어오는 방법

key값을 넣으면 index(저장위치, Hash Code)를 알려준다.

 

⭐️ 해싱 순서 :

키로 해시함수 호출 -> hash function을 통해 hash code얻어옴 -> hash code에 대응하는 링크드리스트 배열에서 찾음 -> 키와 일치하는 데이터를 찾음.

 

🐤  주요 메소드

entrySet() : key - value쌍을 가져옴

keySet() : key값들만 가져옴

values() : value들만 가져옴

get(Object key) : key값을 통해 value를 가져옴

getOrDefault(Object key, Object defaultValue) : key값이 없으면 defaultValue의 값을 반환함, 보통 put이랑 같이 사용하는듯

boolean containsKey(Object key) : key가 테이블에 있는 값인지의 여부를 확인

boolean containsValue(Object value) : value가 테이블에 있는 값인지의 여부를 확인

 

 

+)

hash table은 배열과 링크드리스트가 조합되어있는 구조 -> index번호를 통해서 값을 찾음.  

충돌(Hash Collision)이 생길 경우 선형검색을 해야 하기 때문에 매번 O(1)이라고 할 순 없음.

 

예시를 통한 이해가 필요하다면 자바의 정석 HashMap(2) 영상을 참고하시는 것을 추천드립니다!

추가적으로 알게된 점이 생긴다면 계속 포스팅 하겠습니다.