Android 개발 에서 효율 적 인 데이터 구 조 는 HashMap 대신 SparseArray 를 사용 합 니 다.
15630 단어 Android
####Android
android , java2ee android Map,List,Set, android , api( ) , ,android api java api
1、SimpleArrayMap ArrayMap
ArrayMap SimpleArrayMap, HashMap api , HashMap , SimpleArrayMap+Map 。
2 HashMap, HashMap , 。
2、SparseArray SparseArrayCompat LongSparseArray
3 , 2 , removeAt , Long 。
3 HashMap, (key) Integer Long , , , ,viewHolder
3、AtomicFile
AtomicFile File , File , AtomicFile , , 。
----
##### SparseArray HashMap
SparseArray android , hashmap , , 。
PS:support SparseArrayCompat, SparseArray , removeAt
:
[http://stormzhang.com/android/2013/08/01/android-use-sparsearray-for-performance-optimization/](http://stormzhang.com/android/2013/08/01/android-use-sparsearray-for-performance-optimization/ "http://stormzhang.com/android/2013/08/01/android-use-sparsearray-for-performance-optimization/")
、 Hashmap
android , 。 , , , 。 , 。
:
1>
: HashMap hashMap = new HashMap();
:SparseArray sparseArray = new SparseArray();
2>
:HashMap hashMap = new HashMap
:SparseBooleanArray array = new SparseBooleanArray();
3>
:HashMap hashMap = new HashMap
:SparseIntArray array = new SparseIntArray();
、
, :
Button btn = null; // view,
Button btn02 = null; // view,
final int KEY = 1;
/*
* SparseArray (Sparse
* array), ( ),
* 。 , , , 。
*/
SparseArray array = new SparseArray();
2.1
/* */
//public void put(int key, E value) {}
array.put(KEY, btn);
//public void append(int key, E value){}
array.append(KEY, btn);
2.2
/* */
// put , put , , 。
//public void put(int key, E value)
array.put(KEY, btn);
//public void setValueAt(int index, E value)
array.setValueAt(KEY, btn02);
2.3
/* */
//public E get(int key)
array.get(KEY);
//public E get(int key, E valueIfKeyNotFound)
// get(int key) get(int key,E valueIfKeyNotFound), , .get(int key) , null。
array.get(KEY, btn); // key value, 。 default value
2.4 ,
// :
//public int keyAt(int index)
array.keyAt(1); // -1
2.5 ,
// :
//public E valueAt(int index)
array.valueAt(1);
// , -1:
//public int indexOfValue(E value)
array.indexOfValue(btn);
、
package com.kale.pictest;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.util.SparseArray;
import android.util.SparseBooleanArray;
import android.view.View;
import android.widget.Button;
/**
* @author:
* @description :
* @web : http://stormzhang.com/android/2013/08/01/android-use-sparsearray-for-performance-optimization/
* @date :2015 1 19
*/
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
Log.d("TAG", "Max memory is " + maxMemory + "KB");
Button btn = null; // view,
Button btn02 = null; // view,
final int KEY = 1;
/*
* SparseArray (Sparse
* array), ( ),
* 。 , , , 。
*/
SparseArray array = new SparseArray();
/* */
//public void put(int key, E value) {}
array.put(KEY, btn);
//public void append(int key, E value){}
array.append(KEY, btn);
/* */
// put , put , , 。
//public void put(int key, E value)
array.put(KEY, btn);
//public void setValueAt(int index, E value)
array.setValueAt(KEY, btn02);
/* */
//public E get(int key)
array.get(KEY);
//public E get(int key, E valueIfKeyNotFound)
// get(int key) get(int key,E valueIfKeyNotFound), , .get(int key) , null。
array.get(KEY, btn); // key value, 。 default value
// :
//public int keyAt(int index)
array.keyAt(1); // -1
// :
//public E valueAt(int index)
array.valueAt(1);
// , -1:
//public int indexOfValue(E value)
array.indexOfValue(btn);
SparseBooleanArray d;
}
}
:
public class FragmentPagerItemAdapter extends FragmentPagerAdapter {
private final FragmentPagerItems mPages;
private final SparseArrayCompat> mHolder;
public FragmentPagerItemAdapter(FragmentManager fm, FragmentPagerItems pages) {
super(fm);
mPages = pages;
mHolder = new SparseArrayCompat<>(pages.size());
}
@Override
public int getCount() {
return mPages.size();
}
@Override
public Fragment getItem(int position) {
return getPagerItem(position).instantiate(mPages.getContext(), position);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
Object item = super.instantiateItem(container, position);
if (item instanceof Fragment) {
mHolder.put(position, new WeakReference((Fragment) item));
}
return item;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
mHolder.remove(position);
super.destroyItem(container, position, object);
}
@Override
public CharSequence getPageTitle(int position) {
return getPagerItem(position).getTitle();
}
@Override
public float getPageWidth(int position) {
return super.getPageWidth(position);
}
public Fragment getPage(int position) {
final WeakReference weakRefItem = mHolder.get(position);
return (weakRefItem != null) ? weakRefItem.get() : null;
}
protected FragmentPagerItem getPagerItem(int position) {
return mPages.get(position);
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Bitrise에서 배포 어플리케이션 설정 테스트하기이 글은 Bitrise 광고 달력의 23일째 글입니다. 자체 또는 당사 등에서 Bitrise 구축 서비스를 사용합니다. 그나저나 며칠 전 Bitrise User Group Meetup #3에서 아래 슬라이드를 발표했...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.