Стоит отметить, что это не суперэффективно - вы создаете новый буфер списка из фильтра, а затем обходите оригинальную коллекцию СНОВА, чтобы удалить значения.

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

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

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

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

это

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

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

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

Ответы на вопрос(2)

Ваш ответ на вопрос