주제
맵에 대해서 알아봅세 ~
목차
- 맵이란 무엇인가
- 왜 써야 하는가
- 어떻게 동작하는가
내용
collection : 데이터를 모아서 관리할 수 있는 클래스를 컬렉션이라고 한다.
💨What [맵이란?]
- key value 쌍인 엔트리들을 저장 관리해주는 컬렉션
- 종류
- hashMap
- 다른 맵에 비해 빠르다
- 순서를 보장하지 않는다
시간복잡도 : 1
- TreeMap
- key value쌍을 내부적으로 레드 블랙트리로저장하여 관리한다. 따라서 키 값을 기준으로 정렬된 상태를 유지한다
- comparable 인터페이스를 그현하면 사용자가 정렬된 순서를 조정 할 수 있다
- 레드 블랙 트리 자료구조를 사용함으로써 시간복잡도는 : log n이다
- 추가 삭제 연산 또한 그러하다.
- hashMap과 비교해서는 비교적 느리다
- LinkedHashMap
- 입려된 순서를 기억한다.
- 저장된 각 항목은 Map.Entry 클래스를 구현한 Node 클래스로 내부에 after , before 멤버를 갖는 연결리스트 구조를 가지고 있다
- 내부적으로 이중 연결리스트를 사용한다
시간복잡도는 1
을 가진다
❓Why
빠른 엑세스를 필요로 할때 ‼️
✅How [맵은 어떻게 동작할까]
- put 메소드를 이용해서 엔트리를 추가하면 키 값으로 넘겨준 객체의 해시 코드를 계산하여 엔트리 배열의 접근 인덱스로 접근한다.
- 해시 값 계산은 기본적으로 해시 코드 메소드 기반으로 동작한다. 또한 해시 충돌에 대비하여 equals 메소드 까지 사용해서 키 값이 정말 같은 경우에만 value를 리턴한다. 따라서 키 값으로 사용할 클래스의 특성에 따라 필요한 경우 hash code 메소드와 equals 메소드를 오버라이드 해야 할 수 있다.