Scala數組操作


數組操作

  • 初始化固定長度的數組
// 初始化長度為10的數組
val array = new Array[Int](10)
// 初始化創建含有hello與Scala的數組
val s = Array("hello","scala")
  • 創建可變的數組(類似java的集合)
Scala中創建長度可變的數組,類似與java中的ArrayList一樣Scala提供了ArrayBuffer,下面是ArrayBuffer的用法:
// 創建集合等同於下面的new ArrayBuffer[Int]()
val b = ArrayBuffer[Int]()
new ArrayBuffer[Int]()
// 集合添加元素類似與java中的list.add()多次調用添加函數
b += (1, 2, 3, 4, 5, 6)
// 可以追加新的集合元素類似java中的list.addAll()
b ++=Array(7,8,9,10)
// 移除前//5個元素
 b.trimStart(5)
 /**
  * 數組尾部刪除或者添加元素是非常快,但是中間 * 插入元素或者移除元素,操作較慢
  */
  val c = new ArrayBuffer[Int]()
  c+=(1,2,3)
  // 在索引2處插入元素6
  c.insert(2,6)// ArrayBuffer(1, 2, 6, 3)
  // 刪除索引為2元素
  c.remove(2)
  // 刪除索引1后一個元素
  c.remove(1,1)
  有時候創建元素,不知道存儲多少元素可以創建數組緩存ArrayBuffer,然后調用toArray方法將緩沖區間轉為Array(類似於java中StringBuffer.toString方法)
  • 遍歷數組和數組緩沖
    val a = ArrayBuffer[Int]()
    a+=(1,2,3,4,5,6)
    //遍歷數組(變量i取值從0到a.length-1)
    for(i<- 0 until a.length) println(a(i))
    println(a(i)
    // 遍歷偶數下標索引元素
     for(i<- 0 until (a.length,2)) println(a(i))
    // 倒着遍歷索引
    for(i<- (0 until a.length).reverse) println(a(i))
    // yield元素填充
    val  result =for (e <- list) yield e *2
    // 數組轉換
    val list = Array(1, 2, 3, 4)
    // yield元素填充
    val result = for (e <- list) yield e * 2
    println(result.toBuffer)
    // 舍棄偶數元素
    val res = for (e <- list if e % 2 == 0) yield e
    println(res.toBuffer)
    // 也可以使用函數式編程使用filter和Map
    val req = a.filter(_ % 2 == 0).map(2 * _)
  }
  • Scala的常用算法
Scala中有計算求和和排序
     val list = Array(1, 2, 3, 4)
    // 求和,求數組最大值,排序,而排序並不會影響原有的數組
    println(list.sum, list.max,list.sorted.toBuffer)
方法 方法描述
def append(elems:A*):Unit 方法接受多個類型為A的元素,例如b.append(1,2)將對b追加2個元素
def count(p:(A)=>Boolean):Int 方法接受一個布爾值表達式,例如a.count(_>0)將會統計多個正數

方法demo

    val list = Array(8, 5, 1, 2, 3, 4)
    val bs = list.sorted.toBuffer
    bs.append(1,2)
    println(bs)
    // 統計集合大於4的元素個數
    println( bs.count(_ > 4))


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM