SparseArray与ArrayList的区别是什么?

30

我想了解SparseArrayArrayList的性能和效率,以及哪个更好使用。

我不理解何时使用SparseArray以及何时使用ArrayList

2个回答

45

SparseArray的用途是节省内存,当你有一个存在许多空缺的列表时。如果你只有10个项目并且它们的索引范围从0到1000,那么ArrayList中将有许多null条目,这将是相当浪费的。SparseArray会使用内部数据结构来避免这个问题。

在这种情况下的替代方案是HashMap,如果你有很多项目,那么HashMapSparseArray更好。

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

来自Android开发文档


2
这是一篇很好的文章,比较了SparseArrayHashMap的性能。点击阅读 - Alexander Sukharev
但是我猜BinarySearch更快 O o - Daksh Gargas

3
SparseList实现了一个SparseArray。这个类与java.util.ArrayList完全相同,只是前者允许使用预期的set()和add()方法分配到当前列表长度之外的数组索引。
我认为这里有你需要知道的所有内容,以便理解应该使用哪个。
SparseList也更有效率。
更多信息请参见此处

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接