移除ArrayBuffer中第一个负数后的所有负数

来源:互联网 发布:淘宝苏宁易购投诉 编辑:程序博客网 时间:2024/06/01 10:38
import scala.collection.mutable.ArrayBufferobject 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  }}


阅读全文
0 0