scala中ArrayBuffer簡單使用

import scala.collection.mutable.ArrayBuffer

 

/**

  * 與Array區別:

  * 1、Array是不可變的,不能直接地對其元素進行刪除操作,只能通過重賦值或過濾生成新的Array的方式來刪除不要的元素

  * 2、ArrayBuffer是可變的,提供了很多元素的操作,包括刪除的操作

  * 他們相互轉化很方便,調用toArray 、toBuffer方法即可

  */

object ArrayBufferUse {

 

  def main(args: Array[String]): Unit = {

 

    val = 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 <- ary) yield ele * ele

    println(b1.mkString(","))

 

    val ab = ArrayBuffer[Int]()

    ab +=(2,3,4,5,6)

 

    val = for(ele <- ab) yield ele * ele

    println(c.mkString(","))

 

    // 找出來偶數

    val d1 = for(ele <- ab if ele % 2 == 0yield ele * 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 until ab.length if !foundNegative || ab(i) >= 0yield {

      if(ab(i) < 0 ) foundNegative = true

      i

    }

    for (i <- 0 until keepIndex.length){

      ab(i) = ab(keepIndex(i))

    }

    ab.trimEnd(ab.length - keepIndex.length)

    println(ab)

  }

 

}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章