SparseArrayUtil { static public <E extends Number> List<E> asNumberList(SparseArray<E> sparseArray){ SortedMap<Integer, E> content = getContent(sparseArray); int size; Integer n = sparseArray.getN(); if(n != null){ size = n; } else { size = content.size(); } E defaultValue = sparseArray.getDefaultValue(); List<E> result = new AbstractList<E>(){ @Override public int size(){ return size; } @Override public E get(int index){ E value = content.get(index + 1); if(value == null){ value = defaultValue; } return value; } }; return result; } private  SparseArrayUtil(); @SuppressWarnings ( value = {"unchecked"} ) static SortedMap<Integer, E> getContent(SparseArray<E> sparseArray); static List<E> asNumberList(SparseArray<E> sparseArray); static SortedMap<Integer, E> parse(SparseArray<E> sparseArray);  }
@Test public void intSparseArray(){ IntSparseArray sparseArray = new IntSparseArray() .setN(7) .addIndices(2, 5) .addEntries(3, 42); assertEquals(Arrays.asList(0, 3, 0, 0, 42, 0, 0), SparseArrayUtil.asNumberList(sparseArray)); }
@Test public void realSparseArray(){ RealSparseArray sparseArray = new RealSparseArray() .setN(7); assertEquals(Arrays.asList(0d, 0d, 0d, 0d, 0d, 0d, 0d), SparseArrayUtil.asNumberList(sparseArray)); }