Не прямой ответ на ваш вопрос, а решение, если вам нужно только удалить элементы, основанные на равенстве объектов, как в примере кода:
Использовать -=
метод ListBuffer
.Это удаляет все вхождения элемента из ListBuffer
, не создавая копию структуры.
def main(args: Array[String]): Unit = {
val u = 999
val listBuffer = new ListBuffer[Int]
listBuffer ++= Seq(1, 7, 3, 8, 0, 3, 6, 7, 999, 5, 7, 8, 999, 1, 5, 999)
println(listBuffer)
listBuffer -= u
println(listBuffer)
}
Если вы использовали метод filter
, чем вы можете использовать предикат, но копию ListBuffer
будет создано:
def main(args: Array[String]): Unit = {
val u = 999
var listBuffer = new ListBuffer[Int]
listBuffer ++= Seq(1, 7, 3, 8, 0, 3, 6, 7, 999, 5, 7, 8, 999, 1, 5, 999)
println(listBuffer)
listBuffer = listBuffer.filter(_ != u)
println(listBuffer)
}