🔥 이 포스팅은 노마드코더, 자바의정석님의 영상을 보고 간결하게 정리했습니다.
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) 영상을 참고하시는 것을 추천드립니다!
추가적으로 알게된 점이 생긴다면 계속 포스팅 하겠습니다.
'🐤 study > Java' 카테고리의 다른 글
[Java] ObjectMapper란? | 직렬화, 역직렬화 | Jackson 라이브러리 | Serialize, Deserialize | Json Parsing (0) | 2022.07.28 |
---|---|
[Java] 에러처리 | Try-catch | 컴파일 오류, 런타임 오류, 논리 오류 | 예외처리 방법 | checked, unchecked exception | 예외 우선순위 (0) | 2022.07.23 |
[Java] length, size()의 차이 (0) | 2022.02.19 |
[Java] 정규식 정리 (0) | 2022.02.02 |
[Java] ArrayList<Integer>를 int[]로 변환하는 방법 (0) | 2022.01.28 |