scala 學習筆記(二)

    scala中的數組比java的數組強大不少   java

    一、定長數組:長度不變的數組Array,如:聲明一個長度爲10的整形數組,val arr = Array[Int](10);聲明並初始化一個字符串數組: val arrStr = Array("wo","cha","yo")。訪問數組方式:訪問arrStr第一個元素,arrStr(1)便可
算法

    二、變長數組(即數組緩衝):java中有ArrayList和scala中的ArrayBuffer等效;可是ArrayBuffer更增強大,經過下面的事列來熟悉ArrayBuffer:數組

import collection.mutable.ArrayBuffer
    val arrbuff1 = ArrayBuffer[Int]()
    val arrBuff2 = ArrayBuffer(1,3,4,-1,-4)
    arrbuff1 += 23    //用+=在尾端添加元素
    arrbuff1 += (2,3,4,32) //同時在尾端添加多個元素
    arrbuff1 ++= arrBuff2 //能夠用 ++=操做符追加任何集合
    arrbuff1 ++= Array(2,43,88,66)
    arrbuff1.trimEnd(2) //移除最後的2個元素
    arrbuff1.remove(2)  //移除arr(2+1)個元素
    arrbuff1.remove(2,4) //從第三個元素開始移除4個元素
    val arr = arrbuff1.toArray //將數組緩衝轉換爲Array
    val arrbuff2 = arr.toBuffer //將Array轉換爲數組緩衝

    三、遍歷數組和數組緩衝:在java中數組和數組列表/向量上語法有些不一樣。scala則更加統一,一般狀況,咱們能夠用相同的代碼處理這兩種數據結構,for(...) yield 循環建立一個類型和原集合類型相同的新集合。for循環中還能夠帶守衛:在for中用if來實現。數據結構

    for(i <- 0 until arrbuff1.length) yield arrbuff1(i) * 2 //將獲得ArrayBuffer(2,6,4,-2,-4)
    for(i <- 0 until (arrbuff1.length,2)) yield arrbuff1(i) * 2 //將獲得ArrayBuffer(12,-4)
    for(elem <-0 arrbuff1) print(elem) //若是不須要使用下標,用這種方式最簡單了
    for(i <- arrbuff1 if arrbuff1 > 0) print i //打印出arrbuff1中爲整數的值
    arrbuff1.filter( _ > 0).map{ 2 * _} //生成arrbuff1中的正數的兩倍的新集合
    arrbuff1.filter {_ > 0} map {2 * _} //另外一種寫法

    四、經常使用算法:scala有不少便捷內建函數,如
函數

    arrbuff1.sum //對arrbuff1元素求和
    Array("asd","sdf","ss").max //求最大元素
    arrbuff1.sorted(_ < _)  //將arrbuff1元素從小到大排序
    arrbuff1.sorted(_ > _)  //從大到小排序
    util.Sorting.quickSort(Array) //針對數組排序,單不能對數組緩衝排序
    val arr = Array(1,23,4,2,45)
    arr.mkString(",") //指定分割符
    arr.mkString("(",",",")") //指定前綴、分隔符、後綴

更多函數參見Scaladocui

    五、多維數組:
spa

val matrix = Array.ofDim[Int](5,4) //三行四列的二維數組
matrix(2)(3) //訪問第二行、第三個元素

    六、scala數組和java互操做:因爲scala數組是用java數組實現的,因此能夠在java和scala之間來回傳遞,引入scala.collectin.JavaConversion ,能夠在代碼中使用scala緩衝,在調用java方法時,這些對象會被自動包裝成java列表。反過來說,引入scala.collection.asScalaBuffer時,當java方法返回java.util.List時,咱們可讓它轉換成一個Bufferscala

相關文章
相關標籤/搜索