Как удалить 0s из начала ArrayList

#java #arraylist

#java #arraylist

Вопрос:

Мой Arraylist (образец) содержит: A : [ 0, 6, 0, 6, 0, 4, 8, 8, 2 ]

Я хочу удалить все 0, которые появляются в начале списка. Ожидаемый ответ: A : [ 6, 0, 6, 4, 8, 8, 2 ]

Я пытаюсь:

 for(i=0; i<A.size(); i  ){
    if(A.get(i) == 0)
        A.remove(i);
    else break;
}
  

Мой вывод:
A : [6, 6, 4, 8, 8, 2]

Я полагаю, что при выполнении операции A.remove() индексы сдвигаются, поэтому, когда цикл выполняется во второй раз, индекс второго нуля становится 1 (ранее 2) и, таким образом, он также удаляется.

Какую альтернативу мне следует использовать?

Комментарии:

1. 1) найдите индекс последнего префикса 0 2) sublist .

2. Подавляющее соглашение в Java заключается в том, что локальные переменные и поля экземпляра (иногда называемые переменными экземпляра) начинаются со строчной буквы. Поэтому, a а не A если это экземпляр ArrayList . При обращении за помощью полезно придерживаться стандартных соглашений, поскольку это облегчает понимание вашего кода людьми. (В любом случае, это хорошая идея.)

3. Вы пробовали использовать Iterator? docs.oracle.com/javase/8/docs/api/java/util/Iterator.html

Ответ №1:

Проблема в том, что ваш i будет увеличиваться одновременно с удалением элемента с самого начала. Итак, во втором цикле вы смотрите на индекс 1, но индекс 0 теперь имеет значение, на которое вы никогда не смотрели. Это сработало бы для вашего примера, потому что в начале есть только один 0, но не сработало бы с [0, 0, 6, 0] .

Вместо этого используйте while и смотрите только на индекс 0 :

 while (A.size() > 0 amp;amp; A.get(0) == 0) {
    A.remove(0);
}