package com1
import scala.collection.mutable.ArrayBuffer
/**
* @author yangxin_ryan
* Scala实现移除数组中第一个负数之后的所有负数
* 版本一
*/
object Test51 {
def main(args: Array[String]): Unit = {
val arrBuffer = ArrayBuffer[Int]()
arrBuffer += (1, 2, 3, 4, 5, -1, -3, -5, -7)
var foundFirstNegative = false
var arrLength = arrBuffer.length
var index = 0
while(index < arrLength) {
if (arrBuffer(index) >= 0) {
index += 1
} else {
if (!foundFirstNegative) {
foundFirstNegative = true
index += 1
} else {
arrBuffer.remove(index)
arrLength -= 1
}
}
}
println(arrBuffer)
}
}
package com1
import scala.collection.mutable.ArrayBuffer
/**
* @author yangxin_ryan
* Scala实现移除数组中第一个负数之后的所有负数
* 版本二
* 基于版本一优化
*/
object Test52 {
def main(args: Array[String]): Unit = {
val arrBuffer = ArrayBuffer[Int]()
arrBuffer += (1, 2, 3, 4, 5, -1, -3, -5, -7)
var foundFirstNegative = false
val keepIndexes = for (i <- arrBuffer.indices if !foundFirstNegative || arrBuffer(i) >= 0) yield {
print(arrBuffer(i))
if (arrBuffer(i) < 0) foundFirstNegative = true
i
}
println(keepIndexes)
for (i <- keepIndexes.indices) {
arrBuffer(i) = arrBuffer(keepIndexes(i))
}
arrBuffer.trimEnd(arrBuffer.length - keepIndexes.length)
println(arrBuffer)
}
}