gpt4 book ai didi

scala 移除(就地)ListBuffer 中满足条件的所有元素

转载 作者:行者123 更新时间:2023-12-03 20:51:01 29 4
gpt4 key购买 nike

我有一个 ListBuffer。我想删除满足特定条件的所有元素。

我可以迭代它并删除每个元素。但是 Scala 对改变你正在迭代的列表有什么看法呢?它会起作用,还是会删除错误的元素/不返回所有元素? (快速尝试 REPL 表明是的,它会搞砸)

我可以反复调用 find 然后删除找到的元素,直到找不到更多元素为止,但这听起来效率低下。

.filter 将返回一个没有元素的新 ListBuffer,但我想就地做。

这个

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

看起来很有希望,但我不太明白如何在这里使用它

我该怎么做?

最佳答案

您可以将两者结合起来并执行以下操作:

val lb = ListBuffer(1,2,3,4,5,6)
lb --= lb.filter(_ % 2 == 0)

println(lb)
// outputs: ListBuffer(1, 3, 5)

关于scala 移除(就地)ListBuffer 中满足条件的所有元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4417994/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com