Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android:使用SparseArray代替HashMap優化性能

Android:使用SparseArray代替HashMap優化性能

編輯:關於Android編程

之前看到一篇關於adapter的文章用到了SparseArray,所以在這裡寫寫關於SparseArray的用法。

SparseArray是官方針對安卓所寫的容器,與HashMap類似,不過性能比HashMap好。

SparseArray實現了Cloneable接口,還可以調用clone方法。

首先看看SparseArray的用法:

構造:

SparseArray的構造與我們用慣的HashMap,ArrayList一樣也是new出一個實例然後使用。

 

SparseArray sa=new SparseArray();
順便提一下java1.7支持這樣寫:

 

 

SparseArray sa=new SparseArray<>();


也可以在構造的時候就指定大小:

 

 

SparseArray sa=new SparseArray(11);
如果構造的時候不指定大小,則默認為10

 

 

 

添加元素:

用慣ArraList和HashMap的我們知道要往容器裡面添加元素可以分別調用add和put方法。 SparseArray也一樣,可以調用put(int key,E value); 相信有讀者一經發現上面構造SparseArray的時候已經發現,構造的時候只指定一個泛型,而不像HashMap那樣構造的時候要指定兩個泛型類型:
new HashMap(); 
只需要這樣:
SparseArray sa=new SparseArray();
那是因為SparseArray的鍵只能是int形式所以構造的時候只指定值得泛型即可。同時也就是說,只能在鍵為int形式的時候可以使用SparseArray其它情況還是需要使用Map。 除了put方法可以往SparseArray添加元素之外,還可以通過append添加元素。
public void append(int key, E value) 
SparseArray儲存數據是使用二分法儲存,說儲存的數據是根據鍵的大小,從小到大排列。

取值:

既然可以添加那麼自然可以取出來:
public E get(int key) ;
根據鍵取值。 除此之外還有一個方法可以取值:
public E get(int key, E valueIfKeyNotFound) ;
可以看到多了一個參數,從第二個參數的名字可以猜到,當找不到該鍵的值得時候默認使用第二個參數的值。
除了按鍵取值之外還可以按順序取鍵,按順序取值: 查看第幾個位置的值:
public int keyAt(int index)  
查看第幾個位置的鍵:
public E valueAt(int index)  
如果所查的鍵或值沒有的話會返回負數。

刪除:

delete(int key) remove(int key) delete與remove的效果是一樣的這裡不多說 除此之外還有: removeAt(int index) //按順序刪除
clear() 全部清空

改:

public void setValueAt(int index, E value)  
public void put(int key, E value)  

setValueAt可以將index位置上的值改成value 而put方法前面說過,如果說put進去的鍵已經存在那麼就會覆蓋,達到修改的效果。如果put進去的鍵還沒有的話就增加。


說完基本的增刪改查再扯一下其它:
既然官方推薦使用SparseArray,那麼在編碼過程中遇到鍵為int形式的則盡量使用SparseArray代替map。




 
  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved