Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- android network
- print callstack
- 네트워크 디버깅
- convert string to intent
- APK 동적로딩
- gitignore
- BlockingQueue Capacity
- callstack 출력
- APK로딩
- RxJava Programming
- gitignore작성법
- Service 팁
- mitmproxy
- android enum
- convert Intent to string
- Service관리
- corePoolSize
- Intent String 변환
- java callstack
- Dagger2란
- enum performance
- ArrayMap
- Replaygain
- so파일 동적로딩
- RxJava 스터디
- 음량표준화
- lufs
- 오픈소스라이선스
- HashMap vs ArrayMap
- MediaDataSource
Archives
- Today
- Total
일상&개발 로그
[PerformancePattern] ArrayMap vs HashMap 본문
HashMap
Key값의 hashCode를 index로 Array에 값을 저장함.
기본적으로 배열이 커야 충돌확률이 줄어들기때문에 큰 배열을 사용한다.
따라서 검색 속도는 O(1)로 매우 빠르다.
(hash값이 겹칠 경우 chaining등의 방법을 이용한다.)
ArrayMap
두 개의 배열을 이용한다.
1번 배열에는 HashCode를 순서대로 저장한다.
2번 배열에는 Key/Value를 순서대로 저장한다.
값을 가져올 때는 1번 배열을 HashCode로 이진탐색하여 2번 배열의 index를 구한다.
2번 배열의 index 다음 값을 가져온다.(hashIndex * 2, hashIndex * 2 + 1)
검색속도는 O(logN) 이다.
요약:
HashMap은 속도는 빠르지만 메모리를 많이 먹는다.
ArrayMap은 속도는 조금 느리지만 메모리를 조금 먹는다.
ArrayMap은 저장할 값이 1000개 이하일 때만 써라
동영상 링크:
https://www.youtube.com/watch?v=I16lz26WyzQ&index=20&list=PLOU2XLYxmsIKEOXh5TwZEv89aofHzNCiu'개발 > 안드로이드 개발' 카테고리의 다른 글
MediaDataSource를 이용한 프로그레시브 재생 구현 (2) | 2017.08.03 |
---|---|
[PerformancePattern] Enum (0) | 2017.05.23 |
[PerformancePatterns] Service 올바르게 사용하기 (0) | 2017.05.18 |
Gradle 라이브러리 충돌 시 대처방법 (0) | 2017.05.12 |
Dynamic APK Loading Research (0) | 2017.05.10 |
Comments