Retire ceros de ArrayList en Java

Neel Vasa:

Para una entrada dada ArrayList Quiero que todos los 0s principales o en el medio no-cero elementos permanezcan, pero quiero para deshacerse de cualquier número de 0s se arrastra en el ArrayList.

Entrada:

0, 11, 0, 0, 0, 11, 11, 0, 0, 0

Rendimiento esperado:

0, 11, 0, 0, 0, 11, 11

Mi solución:

    private List<Integer> foo() {

        List<Integer> list = Arrays.asList(0, 11, 0, 0, 0, 11, 11, 0, 0, 0);
        Collections.reverse(list);
        Iterator<Integer> iterator = list.iterator();
        int i = 0;
        while (iterator.hasNext() && 0 != iterator.next()) {
            ++i;
        }
        return list.subList(0, i);
    }

¿Qué estoy haciendo mal? ¿Hay una mejor manera de hacer esto?

azurefrog:

Claro, sólo quitar el último elemento si es un 0. Repita hasta que no lo es.

por ejemplo,

    List<Integer> list = new ArrayList<>(Arrays.asList(0, 11, 0, 0, 0, 11, 11, 0, 0, 0));
    while (list.get(list.size()-1) == 0) {
        list.remove(list.size()-1);
    }
    System.out.println(list); // [0, 11, 0, 0, 0, 11, 11]

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=316702&siteId=1
Recomendado
Clasificación