[Java] HashMap정리
🔥 이 포스팅은 노마드코더, 자바의정석님의 영상을 보고 간결하게 정리했습니다.
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) 영상을 참고하시는 것을 추천드립니다!
추가적으로 알게된 점이 생긴다면 계속 포스팅 하겠습니다.