У меня есть ListBuffer. Я хочу удалить все элементы, соответствующие определенному условию.scala Удалить (на месте) все элементы ListBuffer, которые удовлетворяют условию
Я мог бы перебрать его и удалить каждый элемент. Но что говорит Скала об изменении списка, который вы повторяете? Будет ли он работать, или он удалит неправильные элементы/не вернет все элементы? (Быстрая попытка с REPL подсказывает, что да, это испортится)
Я мог неоднократно называть поиск, а затем удалять найденный элемент, пока я больше не нахожусь, но это звучит неэффективно.
.filter вернет мне новый ListBuffer без элементов, но я хочу сделать это на месте.
Это
def --= (xs: TraversableOnce[A]) : ListBuffer.this.type
Removes all elements produced by an iterator from this list buffer.
выглядит многообещающим, но я не могу вполне понять, как использовать его здесь
Как я должен это делать?
См. Также http://stackoverflow.com/questions/2803085/iterators-for-mutable-collections-in-scala –