SparseArray与ArrayList之间的区别?

时间:2014-08-22 09:51:51

标签: java android

我想知道SparseArrayArrayList的效果和效率以及哪一个更好用。 我无法理解何时使用SparseArray以及何时ArrayList

2 个答案:

答案 0 :(得分:39)

SparseArray的目的是为了节省内存,如果你有一个包含大量空白的列表。如果你只有10个项目,并且索引它们的数字范围从0到1000,那么ArrayList {1}}中会有很多null条目,这将非常浪费。 SparseArray将在内部使用数据结构来避免此问题。

在这种情况下,替代方案是HashMap,如果您有很多项目,则优于SparseArray

  

该实现不适用于可能包含大量项目的数据结构。它通常比传统的HashMap慢,因为查找需要二进制搜索,并且添加和删除需要插入和删除数组中的条目。对于容纳数百件物品的容器,性能差异不显着,小于50%。

来自Android dev documentation

答案 1 :(得分:1)

SparseList实现SparseArray。此类与java.util.ArrayList相同,不同之处在于它允许使用预期的set()add()方法分配超出列表当前长度的数组索引。*

我认为在这里您需要了解所有要使用的内容。

SparseList也更有效率

更多信息here