Как удалить () последовательность элементов String в ArrayList (), используя индексы в java? - PullRequest
0 голосов
/ 25 марта 2020

Я хочу удалить 4 индекса в элементах последовательности последовательности в моем коде здесь. Мой ArrayList содержит несколько элементов String:

{MyString,MyString1,MyString2,MyString3,MyString4,...., MyString10}

Это мой код:

String removedItem = "MyString";

for (int i = 0; i < myArrayList.size(); i++) {  
    if (myArrayList.get(i).equals(removedItem)) {
        myArrayList.remove(i);
        myArrayList.remove(i+1);
        myArrayList.remove(i+2);
        myArrayList.remove(i+3);
    }
}

System.out.println(myArrayList);

Кажется, мой код не удаляет первые 4 индекса по порядку. Что я делаю не так и как мне это исправить? Любая помощь будет принята с благодарностью!

Ответы [ 3 ]

2 голосов
/ 25 марта 2020

Если вы хотите удалить указанное значение и следующие три элемента. Вы можете использовать это:

for (int i = 0; i < myArrayList.size(); i++) {  
    if (myArrayList.get(i).equals(removedItem)) {
        myArrayList.remove(i);
        myArrayList.remove(i);
        myArrayList.remove(i);
        myArrayList.remove(i);
    }
}

Поскольку каждый раз, когда вы удаляете элемент, следующий элемент перемещается вперед.

0 голосов
/ 25 марта 2020
String removedItem = "MyString";

int remove = 0;
for (int i = 0; i < myArrayList.size(); i++) {  
    if (myArrayList.get(i).contains(removedItem)) {
        myArrayList.remove(i);
        i--;
        remove++;
        if(remove == 4) {
            System.out.println(myArrayList);
            return;
        }
    }

}

Если вы измените свое значение myArrayList и значение selectedItem, оно также будет работать.

0 голосов
/ 25 марта 2020

Потому что при каждом удалении звонка размер списка будет уменьшаться на единицу. Чтобы отследить это, вы можете использовать точки останова при вызовах удаления.

Например, если ваш ArrayList инициализируется 4 элементами. {MyString, MyString1, MyString2, MyString3}

когда i = 0:

  • После вызова myArrayList.remove(0); MyString будет удален, а размер myArrayList будет 3 {MyString1, MyString2, MyString3}.

  • После вызова myArrayList.remove(1); это удалит MyString2 not MyString1 {MyString1,MyString3}.

  • myArrayList.remove(2); это вызовет исключение

Вы можете использовать Iterator и безопасно проверять методом hasNext() или использовать код, предоставленный ответом Mr.HE, и безопасно проверять, что elemnt != null перед удалением.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...