私はSparseArray
とHashMap
間のパフォーマンスとefficencyを知りたいとどちらが使用することをお勧めします。 SparseArray
を使用する際に分かりましたことができないとSparseArrayためHashmap
SparseArrayとHashmapの違いは?
答えて
SparseArray
は、マップキーが整数であり、整数が0,1,2,3,4、... n - ではないことを意味する連続していない場合に選択する必要がありますが、43,2045 、12、5
それでは、あなたの鍵は整数でなく、シーケンシャル(0、1、2、3、4、... n)をした瞬間を想定してみましょう。この場合、コレクションの最良の選択は何でしょうか?さて、値がStrings
であると仮定してください。この場合、ここでの最適な選択はString
配列(String[]
)です。その理由は、String
配列がパフォーマンスに最小限の影響を与えながらすべてのニーズに答えるからです。
myStringArray[0]
は、キー '0'のString
の値を返します。以下同様です。我々は(それゆえ、「スパース」)配列内の一部の値が空であることを可能にする以外
SparseArray
は、まさにこのように動作します。 SparseArray
は、シーンの背後に大きな配列を作成し、値が配置されている配列のインデックスとして整数キーを使用します。基本的に
、HashMaps
もこのように動作 - 舞台裏の値を配置するために使用される大型の整数配列があります。唯一の違いは、HashMaps
では、キーは整数ではなく、何でもかまいません。この例では、キーがStrings
であるとします。 HashMap
は、ハッシュ関数を使用してこのString
キーを整数に変換し、それを使用して配列の値を配置します。これは、2つの異なるStrings
が同じ整数を生成する場合につながる可能性があります。このような場合、HashMap
は配列内の値をキューに入れるか、新しいキーを生成するなどの別の操作を実行します。これと、ハッシュ関数を介した整数キーの生成は、かなりのパフォーマンスを伴うことがあります。
SparseArray
はこれのどれも必要ありませんので、より効率的である、あなたは整数キーと完全以来、これを省略することができます。
Androidのドキュメントが検索が は、バイナリ検索を必要とし、追加と削除し、必要なので、それは、一般的に従来のHashMapのより遅い
を言うとき配列内のエントリを削除し、
のエントリを削除します。それは自動ボクシングのキーとそのデータ構造を回避できるので、
はのための余分なエントリオブジェクトに依存しない、より多くのメモリオブジェクトに整数をマップするためにHashMapを使用してより効率的な 、両方
であることを意図している各マッピング。
です。キーがプリミティブ型である場合、ハースマップを置き換えるために疎配列を使用できます。
簡潔かつ明確 –
あなたの結論は間違っているようです。 https://developer.android.com/reference/android/util/SparseArray。html: "実装は、多数の項目を含む可能性があるデータ構造には適していません。検索はバイナリ検索を必要とし、配列内のエントリの挿入と削除が必要です。何百ものアイテムを保持するコンテナでは、パフォーマンスの差は重要ではなく、50%未満です。 –
- 1. HashMapとHashMultimapの違い
- 2. alt-rt.jarとrt.jarのHashMapの違いは?
- 3. SparseArray setValueAt()を使うべきときは?
- 4. Serializable SparseArray <カスタムオブジェクト>
- 5. SparseArrayのメソッドを解決できない
- 6. NSDictionary(obj-c)とHashMap(java)のパフォーマンスの違い
- 7. var map = HashMap <Int,String>()とvar map = HashMap <Int,String>(n)の違いは何ですか?
- 8. .Net HashtableとJava HashtableとHashMapの相違点
- 9. HashMapのConcurrentModificationExceptionがマルチスレッドコードでは、別のHashMap
- 10. は、HashMapのは
- 11. 私は、次のHashMap持っているのHashMap
- 12. SparseArrayをシリアライズ<T> with GSON
- 13. AndroidでSparseArrayを並べ替え
- 14. HashMapのパフォーマンスとweirness
- 15. EqualsとHashMap/HashSet
- 16. HashMapとEditText.setEnabled()
- 17. HashMapとcontainsKey()メソッド
- 18. は、HashMapのジャワ
- 19. は、HashMapの
- 20. SparseArrayに2つの異なるクラスを持つことは可能ですか?
- 21. FirebaseのHashmapとTreeMapのパフォーマンス
- 22. のJavaのHashMapとオブジェクトキー
- 23. HashMapとそのネストされたHashMapの並べ替え
- 24. #java HashMapと入力
- 25. Javaイテレーション:HashtableとHashMap
- 26. Java Hashmapのタイピングシステムとは何ですか?
- 27. HashMapのHashSetが間違った値を表示しています
- 28. のHashMap
- 29. HashMapの
- 30. HashMapでHashMap値を保持していないAndroid/Javaシングルトン
非常に良い説明。 – Mauker
https://developer.android.comが存在しない場合、SparseArraysは「適切であることを意図していない」ため、「多数のアイテムを含む可能性のあるデータ構造」がある場合は、HashMapsを使用する必要があります。 –