출처: http://oic.tstore.co.kr/front/community/mentoring/viewMentoring.action?seq=179
[요약]
자바에 익숙한 개발자라면, 해쉬맵을 캐시로 사용하고, 나름의 효과를 볼 수 있다.
하지만 안드로이드에서는 SparseArray라는 클래스가 있어서 키가 Integer값일 때 해쉬맵보다 효율적으로 동작하도록 설계되어 있다.
해쉬맵은 키값의 타입을 java.lang.Integer로 할당하는 반면, SparseArray는 키값의 타입을 기본 자료형인 Integer로 가진다.
그래서 해쉬맵을 사용하게 되면 키값을 위해 너무 많은 Integer 객체가 생성되지만 SparseArray는 그런 객체 생성을 피할 수 있다.
안드로이드는 여러 타입의 sparse배열을 정의하고 있다.
SparseArray ( Integer를 object애 매핑 ), SparseBooleanArray ( Integer를 boolean에 매핑 ), SparseIntArray ( Integer를 integer에 매핑 )
SparseArray 대신 해쉬맵을 사용하면 약간 느릴 수는 있다.
하지만 프로그램 코드가 안드로이드에 종속되지 않는다는 장점이 있다.
즉, SparseArray가 없는 안드로이드 이외의 환경에서도 수정 없이 동일한 코드를 바로 사용할 수 있다.
key, value를 사용하기위해서 HashMap을 사용하는 경우가 있습니다.
key 값을 넣어 주면 value를 리턴해 주는 유용한 기능이 있어서 사용하게 됩니다.
ArrayList는 단순한 순번으로 내용을 기록되어있어 특정 내용에 대해서 알려면
ArrayList 내용을 일일이 비교하는 번거로움이 있습니다.
이럴 때 HashMap을 사용해서 key값을 사용해서 내용을 바로 접근하는데 유용하게 사용됩니다.
그런데 안드로이드에서는 이 HashMap보다 성능이 좋은 SparseArray을 제공합니다.
이것의 제약은 key의 타입이 Integer를 제공하는 것 빼고는 HashMap보다 좋습니다.
key 값을 넣어 주면 value를 리턴해 주는 유용한 기능이 있어서 사용하게 됩니다.
ArrayList는 단순한 순번으로 내용을 기록되어있어 특정 내용에 대해서 알려면
ArrayList 내용을 일일이 비교하는 번거로움이 있습니다.
이럴 때 HashMap을 사용해서 key값을 사용해서 내용을 바로 접근하는데 유용하게 사용됩니다.
그런데 안드로이드에서는 이 HashMap보다 성능이 좋은 SparseArray을 제공합니다.
이것의 제약은 key의 타입이 Integer를 제공하는 것 빼고는 HashMap보다 좋습니다.
-자신이 만든 클래스를 Value로 사용하는 cashe 기능을 구현한다고 가정하면....
참고사이트: http://developer.android.com/reference/android/util/SparseArray.html
SparseArray aImageCache = new SparseArray(Bitmap); aImageCache.put(1000, oBitmap); // oBitmap은 캐쉬하려는 이미지) Bitmap oTmpBitmap = aImageCache.get(1000); // 1000번 키의 이미지 aImageCache.clear(); // SparseArray를 초기화 한다. |
참고사이트: http://developer.android.com/reference/android/util/SparseArray.html
'IT_Programming > Android_Java' 카테고리의 다른 글
[펌] ViewPager에 적용되는 Fragment View 재사용하기 (ViewHolder 적용) (0) | 2012.10.05 |
---|---|
[펌] Contentprovider 사용시 주의 사항 및 Thread safety (0) | 2012.10.05 |
[펌] PreferenceActivity 디자인 하기 (0) | 2012.10.05 |
[펌] Bitmap 생성 없이도 Bitmap 크기 정보를 구하는 방법 (0) | 2012.10.05 |
TypeViewManager (0) | 2012.06.20 |