2015-11-19 131 views
1

通過sparseArray使用ArrayList是否有優勢?一個sparseArray是更好的內存管理,它不會像ArrayList那樣將空值放入空槽中。但是,你會總是推薦我使用一個SparseArray來覆蓋一個非常常用的ArrayList嗎?在Java中,我什麼時候可以通過sparseArray使用ArrayList?

要清楚,我不是問什麼是sparseArray(我已經在上面定義了它),我問什麼時候會想通過sparseArray使用ArrayList。

+0

http://stackoverflow.com/questions/25444226/difference-between-sparsearray-vs-arraylist解釋它。 – Maroun

+1

請閱讀我的問題?我問什麼時候一個ArrayList更有利於一個sparseArray,該鏈接是爲了區別sparseArray。 – j2emanue

+0

我沒有downvote,請不要要求人們取消選票。 – Maroun

回答

3

當列表是而不是稀疏時,ArrayList需要的內存少於SparseArray,並且按O(1)中的索引訪問,而不是O(log n)。

SparseArray class documentation

注意,該容器保持其映射在一個陣列,使用二進制搜索來查找密鑰。該實現不適用於可能包含大量項目的數據結構。它通常比傳統的HashMap慢,因爲查找需要二分搜索並添加和刪除需要插入和刪除數組中的條目。對於容納數百種物品的容器,性能差異不顯着,小於50%。

+0

我想現在我的理解。所以如果我有一個列表,我知道提前知道插槽中會有很多空白,那麼我會使用一個sparseArray。如果我知道有最小量的空插槽,我可以使用ArrayList,對嗎? – j2emanue

+0

另外,當你說「不稀疏」時,你的意思是幾乎沒有空插槽,對吧? – j2emanue

+0

稀疏數組的空槽數多於非空數組。如果你有很少的空插槽,ArrayList的選擇是清楚的。如果數組很稀疏,則*可能需要一個SparseArray,具體取決於潛在空插槽的比例和您的要求是否需要權衡較慢內存訪問速度。在某些情況下,你可能想用ArrayList表示一個稀疏數組,當更快的訪問對你來說比額外的內存更重要時。 –

相關問題