scala Удалите (на месте) все элементы ListBuffer, которые удовлетворяют условию

У меня есть ListBuffer. Я хочу удалить все элементы, удовлетворяющие определенному условию.

Я могу перебрать его и удалить каждый элемент. Но что Scala говорит об изменении списка, который вы повторяете? Будет ли это работать, или удалит не те элементы / не вернет все элементы? (Быстрая попытка с REPL предполагает, что да, это испортит)

Я мог бы многократно вызывать find и затем удалять найденный элемент, пока больше не нахожу, но это звучит неэффективно.

.filter вернет мне новый ListBuffer без элементов, но я хочу сделать это на месте.

Этот

def --= (xs: TraversableOnce[A]) : ListBuffer.this.type
Removes all elements produced by an iterator from this list buffer.

выглядит многообещающим, но я не совсем понимаю, как его использовать здесь

Как мне это сделать?

15
задан skaffman 14 December 2010 в 08:13
поделиться