import scala.collection.mutable.ArrayBuffer
object test4 {
def main(args: Array[String]) {
//需求:移除下列可变数组中的第一个负数之后的所有负数
val a =ArrayBuffer[Int]()
a+=(1,2,3,4,-1,-3,-9,-4)
var foundFirstNegative=false
//每次记录不需要移除的索引 稍后一次性移除所有需要移除的元素
//性能较高,数组内的元素迁移只要移动一次即可
val keepIndexs=for(i <-0 until a.length if !foundFirstNegative || a(i)>=0)yield{
if(a(i) < 0 ) foundFirstNegative = true
i
}
//注意这里的keepIndexs 记录的是不需要移除的元素的索引 是一个迭代器
println(keepIndexs)//Vector(0, 1, 2, 3, 4)
for(i <- 0 until keepIndexs.length){a(i)=a(keepIndexs(i))}
a.trimEnd(a.length-keepIndexs.length)
for(c <-a){
println(c)
}
// 结果;
// 1
// 2
// 3
// 4
// -1
}
}
移除ArrayBuffer中第一个负数后的所有负数
最新推荐文章于 2021-09-28 11:00:10 发布