Удалить все вхождения элемента из ArrayList


Я использую java.util.ArrayList, Я хочу удалить все вхождения определенного элемента.

    List<String> l = new ArrayList<String>();
    l.add("first");
    l.add("first");
    l.add("second");

    l.remove("first");

Он удаляет только первое вхождение. Но я хочу, чтобы все вхождения были удалены после l.remove("first"); Я ожидаю, что список будет оставлен только со значением "second". Я нашел в гугле, что это может быть достигнуто путем создания нового списка и вызова list.removeAll(newList). Но можно ли удалить все вхождения без создания нового списка или есть ли какой-либо API для его достижения ?

5 52

5 ответов:

l.removeAll(Collections.singleton("first"));

другой способ использования Java 8:

l.removeIf("first"::equals);
while(l.remove("first")) { }

это удаляет все элементы "первый" из списка.

можно использовать removeAll() метод.

list.removeAll(Arrays.asList("someDuplicateString"));

Так в вашем примере вы используете строки, Я думаю, должен делать трюк.

for(int i = 0; i < list.size();i++){
    if(list.get(i).equals(someStringNameOrValue)){
        list.remove(i--);
    }
}

похоже, я неправильно понял ваш вопрос. Я обновил свой ответ. Я прав? вы хотите удалить все вхождения "первого"?