はじめに
Androidではモバイル端末での処理に最適化されたいくつかの代替クラスが用意されています。
ほとんどがHashMap関係のメモリ消費を抑えるためのものですが、Android Developersにも代替クラスをまとめたページはないようなので、知っている範囲でまとめてみました。
SparseArray
似ている機能:HashMap<Integer,T>
SparseArrayはAndroid向けにパフォーマンスが改良されたHashMap<Integer,T>
の代替クラス。
Supportライブラリに最新のSparseArray
と同じ実装になったSparseArrayCompat
がある。
http://developer.android.com/reference/android/support/v4/util/SparseArrayCompat.html
LongSparseArray
似ている機能:HashMap<Long,T>
API level 16から追加された、keyがint
からlong
になったSparseArray
。
Supportライブラリにもある。
http://developer.android.com/reference/android/support/v4/util/LongSparseArray.html
SparseBooleanArray
似ている機能:HashMap<Integer,Boolean>
valueがboolean
型のSparseArray
。
HashMap<Integer,Boolean>
の置き換えができるが、value型がBoolean
ではなくboolean
なので注意。
http://developer.android.com/reference/android/util/SparseBooleanArray.html
SparseIntArray
似ている機能:HashMap<Integer,Integer>
valueがint
型のSparseArray
。
HashMap<Integer,Integer>
の置き換えができるが、value型がInteger
ではなくint
なので注意。
http://developer.android.com/reference/android/util/SparseIntArray.html
SparseLongArray
似ている機能:HashMap<Integer,Long>
API level 18から追加された、valueがlong
型のSparseArray
。
HashMap<Integer,Long>
の置き換えができるが、value型がLong
ではなくlong
なので注意。
Supporライブラリには存在しない。
https://developer.android.com/reference/android/util/SparseLongArray.html
ArrayMap
似ている機能:HashMap<K,V>
API level 19で追加された、Map<K,V>
の新しい実装。
HashMap
よりもメモリ効率が良い。
Supportライブラリにもある。
http://developer.android.com/reference/android/support/v4/util/ArrayMap.html
SimpleArrayMap
似ている機能:HashMap<K,V>
Supportライブラリにしか存在しない。
ArrayMap
からMap
インターフェイスの実装を外したバージョン。
…というよりも、ArrayMap
がこのクラスにMap
の実装を追加している。
おそらくこちらのほうが軽い。
http://developer.android.com/reference/android/support/v4/util/SimpleArrayMap.html
FloatMath
似ている機能:Math
(一部)
float
専用の数値演算処理クラス。
javaのMath
に比べて速いが、肝心のメソッドが少ない…。
Math
より遅い場合もあったのでAPI 23でdeprecatedになりました(AOSP Issue 36199)。
http://developer.android.com/reference/android/util/FloatMath.html
Pair
似ている機能:AbstractMap.SimpleEntry<K,V>
key,valueの2つの値を任意の型で保持することができるクラス。
AndroidSDK上ではPair
のほうが先に実装されているが、AbstractMap.SimpleEntry<K,V>
とほぼ同様。
http://developer.android.com/reference/android/util/Pair.html