我最近开始使用Android SparseArray代替ArrayList来处理少量项目。我想知道为什么它不包含像普通ArrayList一样的toArray()方法?它包含一个用于值的私有对象数组,但是无法返回它们。在我看来,这是一种有用的方法,因为ArrayList到数组的转换在Android中很常见。我假设由于哈希的工作方式,它将返回带有空槽的数组?

我的第二个问题是,将SparseArray转换为普通Object数组的最有效方法是什么?

最佳答案

要回答您的问题的标题,没有任何方法可以解决,因为SparseArray不是数组,实际上是HashMap的优化,将任意整数绑定到任意值。优化之处在于,它没有像HashMap那样使用装箱/拆箱。

然后第二部分,如何将其转换为数组,我建议使用size()和keyAt(index)确定最大的数组索引,然后分配适当大小的数组,最后使用具有合理默认值的方法。

关于java - 为什么不能将SparseArray转换为Array?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31837901/

10-10 02:07