IndexOutOfBoundsException: с двумя LinkedList - PullRequest
0 голосов
/ 13 ноября 2018

Поэтому я пытаюсь удалить несколько слов из LinkedList из заданных индексов LinkedList. Но я получаю

IndexOutOfBoundsException:

пытаюсь сделать это:

    LinkedList<Integer> List_Of_Index = new LinkedList<>();
    LinkedList<String> list_Of_Words = new LinkedList<>();


    List_Of_Index.add(0);
    List_Of_Index.add(2);

    list_Of_Words.add("remove");
    list_Of_Words.add("dont");
    list_Of_Words.add("remove");

    for (int numb:List_Of_Index){
        list_Of_Words.remove(numb);
    }

Ответы [ 3 ]

0 голосов
/ 13 ноября 2018

Когда вы удалили один элемент списка на первой итерации цикла, список, содержащий два элемента, содержит один элемент на второй итерации и ссылка на индекс 2 недопустима.
Принимая во внимание list_Of_Words.remove(2) это бросает IndexOutOfBoundsException.

Вы можете использовать счетчик для подсчета количества удалений и использовать его для уменьшения индекса для удаления:

 int removal = 0;
 for (int numb:List_Of_Index){
        list_Of_Words.remove(numb-removal);
        removal++;
 }
0 голосов
/ 13 ноября 2018

После первой итерации в цикле ваш список слов будет иметь размер 2 (последний индекс 1)

0 голосов
/ 13 ноября 2018

вы не можете удалить элемент с индексом 2 в list_Of_Words ....
list_Of_Words имеет только 2 элемента ...

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