如何将稀疏数组转换为数组列表?

2022-09-01 09:47:22

我知道这是可能的:

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

但是根据Android更有效率,因此,我想知道是否有可能将a转换为.SparseArray<Object>SparseArrayArraylist

非常感谢任何输入。


答案 1

这将只获取值,忽略索引之间的差距(就像您现有的 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;
}

答案 2

ArrayMap看起来是一个更好的选择,它从API 19开始就可用了。


推荐