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]