2012/05/10

Android:SparseArrayでパフォーマンスを向上する

Mapインターフェイスの利用を決定する前にSparseArrayの利用を検討します。

SparseArrayのキーはint型に限定されています。
そして、SparseArrayはint型のキーを持つMap<Integer, Object>と置換可能です。

使用例:
SparseArray<String> sparseArray = new SparseArray<String>();
sparseArray.put(1, "value");
String str = sparseArray.get(1);

Mapインターフェイスと比べ、SparseArrayは汎用性を犠牲にする代わりに高いパフォーマンス
を実現しています。

Map<Integer, Object>では、キーの指定にInteger⇒Objectへのキャストを要します。
しかし、キーがint型固定のSparseArrayであればキャストの必要が無い分、パフォーマン
スの面で有利です。

Map<Integer, Object>をSparseArrayに置換する方法は、静的解析ツールのLintでも勧め
られる方法の1つです。

参考:http://developer.android.com/reference/android/util/SparseArray.html