안드로이드 개발 세븐틴 : SparseArray의 모음, 상세 ArrayMap

머리말


Anndroid 개발자로, Java 언어는 우리는 대부분의 경우, 데이터 수집 프레임 워크의 일부를 다루는 자연은 등의 HashMap, HashSet에, 자바를 사용하는 경우에 사용하지만 때문에, 안드로이드를 알 수 있습니다 자신의 특별한 요구는,뿐만 아니라, android.util 가방에서, 공식 문서를 참조 다음과 같이 여러 종류의 총을 캡처은 "독점"컬렉션 클래스에 자신의 요구를 사용자 정의 : SparseArray 시리즈 (SparseArray, SparseBooleanArray, SparseIntArray, SparseLongArray, LongSparseArray), 및 ArrayMap, ArraySet, 나는 결코 배우지 않더라도, 기본적으로 차이점과 사용의 일부를 짐작했을 것이다,이 클래스의 이름을 볼 수 있다고 생각하고, 우리가 배울 수있는 좋은 학교에 와서 여기에, 시작!

디렉토리


1. 
2. 디자인의 아름다움을 느낄 
3. 장점과 단점 및 응용 프로그램 시나리오를

본문


사용하여
내 습관에 따라, 나는 상관없이 어떤 학교, 최초의 필요성의 사용 방법에 대해 알아 보자 "는"순서 이론 것들에 대한 이야기에 따라 그것의 사용을 느낄 사용하는 것입니다 생각합니다. 
먼저 우리는 SparseArray의 사용보고

       

 //声明
        SparseArray<String> sparseArray= new SparseArray<>();
        //增加元素,append方式
        sparseArray.append(0, "myValue");
        //增加元素,put方式
        sparseArray.put(1, "myValue");
        //删除元素,二者等同
        sparseArray.remove(1);
        sparseArray.delete(1);
        //修改元素,put或者append相同的key值即可
        sparseArray.put(1,"newValue");
        sparseArray.append(1,"newValue");
        //查找,遍历方式1
        for(int i=0;i<sparseArray.size();i++){
            Log.d(TAG,sparseArray.valueAt(i));
        }
        //查找,遍历方式2
        for(int i=0;i<sparseArray.size();i++){
            int key = sparseArray.keyAt(i);
            Log.d(TAG,sparseArray.get(key));
        }


확인, 정상적인 사용 및 다른 데이터 구조는 실질적으로 동일한 해시 맵. 
유일한 차이점은 키와 값의 타입, 키 값과 그 값의 인수가 일반적이지만, int 형의 SparseArray 키 값을 입력 개체의 값 인수는,이보고, 당신이 찾을 수 있습니다 그것은 매우 이상한 해시 맵 하지를 사용하는 음,이 같은 제약의 중요성에 제약을 많이하여?

당신이 전에 SparseArray 쌍둥이 형제 자매의 나머지 부분을 살펴, LongSparseArray 및 SparseArray 비교, 유일한 차이점은 오래로, 다음 상대 SparseArray, 그것은 데이터 요소를 저장할 수 있기 때문에 키 값이 너무 오래입니다 SparseArray보다 더.

또한 원기의 범위 -2 ^ 31-2 ^ 31-1 INT, 긴 -2 ^ 63-2 ^ 63-1

이어서 SparseBooleanArray, SparseIntArray, SparseLongArray 세 형제 값이 비교적 말하기 SparseArray 값이 결정된다 켜 SparseBooleanArray 부울 타입 고정 int 형 SparseIntArray 값 긴 고정식 SparseLongArray 값의 값을 고정.

값 유형 부울, INT의 값이 긴 소문자 것을 참고, 대신의 기본 유형, 패키지 유형을 의미

다음 무엇에 대한 간단한 요약

SparseArray          <int, Object>
LongSparseArray      <long, Object>
SparseBooleanArray   <int, boolean>
SparseIntArray       <int, int>
SparseLongArray      <int, long>



좋아, 우리는 ArrayMap 및 ArraySet의 사용을 볼 것이다

       

ArrayMap<String,String> map=new ArrayMap<>();
        //增加
        map.put("xixi","haha");
        //删除
        map.remove("xixi");
        //修改,put相同的key值即可
        map.put("xixi2","haha");
        map.put("xixi2","haha2");
        //查找,通过key来遍历
        for(String key:map.keySet()){
            Log.d(TAG,map.get(key));
        }


OK, 정상적인 사용, 그리고의 HashMap은 다르지 않습니다. 내가 말을 계속하지 않을 ArraySet, 그들의 관계의 HashMap 및 HashSet의 등처럼, 요소를 저장할 수 없습니다 같은 HashSet의입니다.

추가는 ArraySet의 사용의 minSdkVersion 값이 커야하는 최소 SDK 버전 (23), 필요, 설명 같거나 (23)

게시 된 377 개 원래 기사 · 원 찬양 145 · 전망 210 000 +

추천

출처blog.csdn.net/Windgs_YF/article/details/104298890