我想知道SparseArray
和ArrayList
的效果和效率以及哪一个更好用。
我无法理解何时使用SparseArray
以及何时ArrayList
?
答案 0 :(得分:39)
SparseArray
的目的是为了节省内存,如果你有一个包含大量空白的列表。如果你只有10个项目,并且索引它们的数字范围从0到1000,那么ArrayList
{1}}中会有很多null
条目,这将非常浪费。 SparseArray
将在内部使用数据结构来避免此问题。
在这种情况下,替代方案是HashMap
,如果您有很多项目,则优于SparseArray
。
该实现不适用于可能包含大量项目的数据结构。它通常比传统的HashMap慢,因为查找需要二进制搜索,并且添加和删除需要插入和删除数组中的条目。对于容纳数百件物品的容器,性能差异不显着,小于50%。
答案 1 :(得分:1)
SparseList实现SparseArray
。此类与java.util.ArrayList
相同,不同之处在于它允许使用预期的set()
和add()
方法分配超出列表当前长度的数组索引。*
我认为在这里您需要了解所有要使用的内容。
SparseList也更有效率
更多信息here