머리말
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)