java - 为什么我不能将 SparseArray 转换为数组?

标签 java android arraylist

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

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

最佳答案

要回答你的问题的标题,没有方法,因为 SparseArray 不是数组,它实际上是 HashMap 的优化,将任意整数绑定(bind)到任意值。优化在于它不使用 HashMap 会使用的装箱/拆箱。

然后是第二部分,你应该如何将它转换为数组,我建议使用 size() 和 keyAt(index) 确定最大的数组索引,然后分配一个适当的数组大小,最后使用具有合理默认值的 get(index, default) 方法复制所有值。

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

相关文章:

java - 如何使 pdf 显示为下载选项而不是在浏览器上呈现?

java - 我可以在 commit() 之后重用 UserTransaction 实例吗?

java - 在打印期间跳过 ArrayList 的特定值

java - jsp中的下载链接不起作用

java - 使用 saxparser 验证本地位置的模式文件

java - 在 TextView 外单击时,Android 编辑文本不会失去焦点

android - 如何从android中的 Activity 中选择自定义 ListView 中的所有复选框

android - 如果从菜单调用 Activity ,如何使用 onActivityResult(..)

java - 通过构造函数将ArrayList写入txt文件

java - Java 8 去除重复数字并求和