2015-03-22 3 views
0

Я пытаюсь удалить все элементы в ArrayList, которые имеют тот же префикс, это мой кодУдалить элементы с префиксом

public void removeWordsWithPrefix(String prefix) { 

    for(Concept def:list){ 
     if(def.getName().toLowerCase().substring(0,prefix.length()).equals(prefix.toLowerCase())) 
     { 
      list.remove(def); 
     } 

    }  
} 

Проблема заключается в том, что только удаляет первое слово с префиксом и а не другие.

ответ

0

При удалении записей из списка вы должны перебирать назад; например:

for(int i = list.size()-1; i >= 0; i--) { 
    // you're free to remove an item from index i here 
} 

Если вы хотите добавить еще несколько шаблонных, вы можете также использовать Iterator возвращенное list.iterator().

0

firstly startsWith (префикс) выполнит задание вместо подстроки и равно.

Во-вторых, вы не можете удалить из списка, который вы выполняете, если вы не используете итератор (в зависимости от реализации списка вы можете получить исключение или неожиданное поведение).

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

Смежные вопросы