繁体   English   中英

如何将 SparseArray 转换为 ArrayList?

[英]How to convert a SparseArray to ArrayList?

我知道这是可能的:

Map<Integer, Object> map = new HashMap<Integer, Object>();
...
List<Object> arrayList = new ArrayList<Object>(map.values());

但是根据 android SparseArray<Object>效率更高,因此,我想知道是否可以将SparseArray转换为Arraylist

非常感谢任何输入。

这将只获得值,忽略索引之间的差距(就像您现有的 Map 解决方案一样):

public static <C> List<C> asList(SparseArray<C> sparseArray) {
    if (sparseArray == null) return null;
    List<C> arrayList = new ArrayList<C>(sparseArray.size());
    for (int i = 0; i < sparseArray.size(); i++)
        arrayList.add(sparseArray.valueAt(i));
    return arrayList;
}

ArrayMap看起来是一个更好的选择,它自 API 19 起可用。

科特林版本:

   fun <T> SparseArray<T>.values(): List<T> {
        val list = ArrayList<T>()
        forEach { _, value ->
            list.add(value)
        }
    return  list.toList()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM