Java 如何将SparseArray转换为ArrayList?

Java 如何将SparseArray转换为ArrayList?,java,android,Java,Android,我知道这是可能的: Map<Integer, Object> map = new HashMap<Integer, Object>(); ... List<Object> arrayList = new ArrayList<Object>(map.values()); Map Map=newhashmap(); ... List arrayList=新的arrayList(map.values()); 但是根据安卓SparseArray更高效,

我知道这是可能的:

Map<Integer, Object> map = new HashMap<Integer, Object>();
...
List<Object> arrayList = new ArrayList<Object>(map.values());
Map Map=newhashmap();
...
List arrayList=新的arrayList(map.values());
但是根据安卓
SparseArray
更高效,因此,我想知道是否可以将
SparseArray
转换为
Arraylist


非常感谢您的任何输入。

这将只获得值,忽略索引之间的间隙(正如您现有的地图解决方案所做的那样):

公共静态列表asList(SparseArray SparseArray){
if(sparseArray==null)返回null;
List arrayList=新的arrayList(sparseArray.size());
对于(int i=0;i
看起来是一个更好的选择,从API 19开始提供。

Kotlin版本:

   fun <T> SparseArray<T>.values(): List<T> {
        val list = ArrayList<T>()
        forEach { _, value ->
            list.add(value)
        }
    return  list.toList()
fun SparseArray.values():列表{
val list=ArrayList()
forEach{},值->
列表。添加(值)
}
返回列表.toList()

谢谢,但这似乎是一种乏味的方法?您知道另一种方法吗?例如
List arrayList=new arrayList(map.values())
例如,对于Map?这是唯一的方法。在一个方法中编写一次,然后忘记它有多么乏味!HashMap的开销有多大?在需要轻松访问值的数组列表(即使使用整数作为键)的情况下,使用HashMap似乎比创建一个迭代到的循环更好生成那个arraylist。我是不是想得太多了?我想我需要去测试这两个方面。@LocalPCGuy HashMap会占用不必要的内存空间来做同样的事情。所以,考虑到我们谈论的是一个移动应用程序,照顾内存和优先使用SparSearray总是很重要的。我想知道HashMap是否会占用这么多的内存tra内存空间大于SparseArray+新的ArrayList来迭代值。这对
android.util.SparseArray
不起作用,没有
forEach
方法。
   fun <T> SparseArray<T>.values(): List<T> {
        val list = ArrayList<T>()
        forEach { _, value ->
            list.add(value)
        }
    return  list.toList()