Java
Java로 자료구조 이해하기 5편(Map)
monkeyDugi
2021. 10. 16. 19:37
반응형
Map
- 키와 쌍을 가짐.
- 키를 중복 x, 값은 중복 o
- Map은 내부적으로 Entry배열을 가지고 있는데 Entry는 key, value 쌍을 의미한다.
대략 코드는 아래와 같이 생겼다. - Collection interace는 아니지만, 동일하게 사용되기 위해 Entry를 Set으로 반환한다.
HashMap
특징
- HashMap(동기화 x)은 Hashtable(동기화 O)의 신버전
- 순서를 유지하려면, LinkedHashMap 클래스를 사용하면 된다.
- Hashing 기법으로 데이터를 저장한다. 데이터가 많아도 검색이 빠르다.
hashing
- 해싱이란 해시함수를 이용하여 해시 테이블에 데이터를 저장하고, 읽어오는 것을 의미한다.
java에서는 hashCode() - 해시 함수란 key를 인자로 주면 해시 코드를 만들어 준다.
해시 코드는 배열에서 인덱스라고 생각하면 된다.
즉, 배열을 활용한다. - 인덱스를 찾으면 해당 인덱스에서 링크드 리스트를 활용하여 데이터를 컨트롤 한다.
이 구조를 hash table 이라고 한다. - 이런 해싱 기법은 HashMap 뿐 아니라 Hash가 들어가는 HashSet, Hashtable, HashMap에서 모두 사용된다.
아래는 환자정보관리 시스템으로 예시를 든 내용이다. 자바의 동영상 강의 참고
hash table
- 배열과 링크드 리스트가 조합된 형태
- 배열은 접근성이 좋은 장점, 링크드 리스트의 변경이 용이한 점을 활용했다.
TreeMap
특징
- TreeSet과 같은 원리이다.
- 즉, 데이터 추가 삭제가 느리고, 정렬 및 검색에 좋다.
반응형