import scala.collection.mutable.ArrayBuffer
/**
* 与Array区别:
* 1、Array是不可变的,不能直接地对其元素进行删除操作,只能通过重赋值或过滤生成新的Array的方式来删除不要的元素
* 2、ArrayBuffer是可变的,提供了很多元素的操作,包括删除的操作
* 他们相互转化很方便,调用toArray 、toBuffer方法即可
*/
object ArrayBufferUse {
def main(args: Array[String]): Unit = {
val b = ArrayBuffer[Int]()
b+= 1;
b+= (2,3,4,5,6)
b.remove(1) // 删除元素
println(b.mkString(","))
// 变成Array
val ary = b.toArray
println(ary.mkString(","))
println(ary.sum)
println(ary.max)
println(ary.min)
println(ary.toBuffer.toString)
// yield
var b1 = for(ele
println(b1.mkString(","))
val ab = ArrayBuffer[Int]()
ab +=(2,3,4,5,6)
val c = for(ele
println(c.mkString(","))
// 找出来偶数
val d1 = for(ele
println(d1.mkString(","))
// 函数式编程 _ 表示元素
println(d1.filter(_ % 2 == 0).map(_ * 3).mkString(","))
removeNegativeBad()
removeNegativeGood()
}
def removeNegativeBad()={
val ab = new ArrayBuffer[Int]()
ab += (1,2,3,4,5,-1,-2,-3)
var findNegative = false
var index = 0
var abLen =ab.length
while (index < abLen) {
if(ab(index) >=0 ){
index += 1
}else{
if(!findNegative){
findNegative = true;
index+=1
}else{
ab.remove(index)
abLen -=1
}
}
}
println(ab.mkString(","))
}
def removeNegativeGood()={
val ab = ArrayBuffer[Int]()
ab+=(1,2,3,4,-1,-2,-3,-4,-5)
var foundNegative = false
val keepIndex = for (i = 0) yield {
if(ab(i) < 0 ) foundNegative = true
i
}
for (i
ab(i) = ab(keepIndex(i))
}
ab.trimEnd(ab.length - keepIndex.length)
println(ab)
}
}