[꼼꼼한 개발자] 꼼코더
[JAVA] - HashMap, LinkedHashMap, TreeMap, Hashtable 차이점 간단하고 쉽게 이해하기 본문
간단하고 쉽게/JAVA
[JAVA] - HashMap, LinkedHashMap, TreeMap, Hashtable 차이점 간단하고 쉽게 이해하기
꼼코더 2022. 12. 22. 01:14반응형
🙋🏻♂️ 간단정리 (활용조건)
- HashMap : 일반적으로 사용 일반적으로 빠르고 오버헤드가 적기 때문.
- LinkedHashMap : 삽입한 순서대로 키 정보를 얻고 싶을때 사용
- TreeMap : 정렬된 순서대로 키 정보를 얻고 싶을때 사용
- Hashtable : 병렬 처리를 하면서 자원의 동기화를 고려해야 하는 상황일 때 사용.
🔑 HashMap
- 검색과 삽입 : O(1) 시간이 소요.
- 키의 순서 : 무작위.
- 구현 : 연결리스트로 이루어진 배열.
- null : key와 null value를 모두 허용.
↔️ LinkedHashMap
- 검색과 삽입 : O(1) 시간이 소요.
- 키의 순서 : 삽입한 Key의 순서대로 정렬.
- 구현 : 양방향 연결 버킷(double-linked bucket)으로 구현되어 있다.
🌳 TreeMap
- 검색과 삽입 : O(log N) 시간이 소요.
- 키의 순서 : 삽입한 Key의 sort순.
- 즉, 키는 반드시 Comparable 인터페이스를 구현하고 있어야 한다..
- 구현 : 레드-블랙 트리로 구현.
🚂 Hashtable
- 검색과 삽입 : O(1) 시간이 소요된다.
- 키의 순서 : 무작위.
- 구현 : 연결리스트로 이루어진 배열.
- null : key와 null value 모두 불허
- 동기화를 지원한다. (thread safe)
💡 따라서 Hashtable은 멀티스레드 환경에서 동작가능하며, 동기화를 지원하기 때문에 HashMap보다 느리다.
참고 : https://dar0m.tistory.com/200
'간단하고 쉽게 > JAVA' 카테고리의 다른 글
[JAVA] - 명시적 형변환 연산(Casting), 암묵적 형변환(Promotion) 간단하고 쉽게 이해하기 (0) | 2023.03.16 |
---|---|
[JAVA] - Optional이란? 간단하고 쉽게 이해하기 (Optional 객체 생성 예제) (2) | 2023.03.09 |
[JAVA] - 제네릭이란?(Generic) 간단하고 쉽게 이해하기 (제네릭의 장점) (0) | 2022.12.20 |
[JAVA] - SDK, JDK 간단하고 쉽게 이해하기 (0) | 2022.12.20 |
[JAVA] - Java SE, Java EE 차이 간단하고 쉽게 이해하기(자바 플렛폼의 종류) (0) | 2022.12.20 |
Comments