it-swarm.com.de

Wie konvertiere ich ein SparseArray nach ArrayList?

Ich weiß, dass dies möglich ist:

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

Laut Android ist SparseArray<Object> jedoch effizienter, daher frage ich mich, ob es möglich ist, eine SparseArray in eine Arraylist umzuwandeln.

Ich freue mich über jede Eingabe.

24
LuckyMe

Dadurch werden nur die Werte erhalten und Lücken zwischen den Indizes werden ignoriert (wie bei Ihrer vorhandenen Map-Lösung):

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;
}
34
Nick

ArrayMap scheint eine bessere Wahl zu sein, die seit API 19 verfügbar ist.

0
Sah