Подтвердить что ты не робот

Удалите все вхождения элемента из 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". Я нашел по googling, что это может быть достигнуто путем создания нового списка и вызова list.removeAll(newList). Но возможно ли удалить все вхождения без создания нового списка или есть ли какой-либо API для его достижения?

4b9b3361

Ответ 1

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

Ответ 2

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

l.removeIf("first"::equals);

Ответ 3

while(l.remove("first")) { }

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

Ответ 4

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

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

Ответ 5

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

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

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