scala学习笔记-数组转换(8)
生活随笔
收集整理的這篇文章主要介紹了
scala学习笔记-数组转换(8)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用yield和函數式編程轉換數組
1 // 對Array進行轉換,獲取的還是Array2 val a = Array(1, 2, 3, 4, 5)3 val a2 = for (ele <- a) yield ele * ele4 // 對ArrayBuffer進行轉換,獲取的還是ArrayBuffer5 val b = ArrayBuffer[Int]()6 b += (1, 2, 3, 4, 5)7 val b2 = for (ele <- b) yield ele * ele8 // 結合if守衛,僅轉換需要的元素9 val a3 = for (ele <- if ele % 2 == 0) yield ele * ele 10 11 // 使用函數式編程轉換數組(通常使用第一種方式) 12 a.filter(_ % 2 == 0).map(2 * _) 13 a.filter { _ % 2 == 0 } map { 2 * _ }算法案例:移除第一個負數之后的所有負數
1 // 構建數組2 val a = ArrayBuffer[Int]()3 a += (1, 2, 3, 4, 5, -1, -3, -5, -9)4 5 // 每發現一個第一個負數之后的負數,就進行移除,性能較差,多次移動數組6 var foundFirstNegative = false7 var arrayLength = a.length8 var index = 09 while (index < arrayLength) { 10 if (a(index) >= 0) { 11 index += 1 12 } else { 13 if (!foundFirstNegative) { foundFirstNegative = true; index += 1 } 14 else { a.remove(index); arrayLength -= 1 } 15 } 16 }算法案例:移除第一個負數之后的所有負數(改良版)
1 // 重新構建數組2 val a = ArrayBuffer[Int]()3 a += (1, 2, 3, 4, 5, -1, -3, -5, -9)4 5 // 每記錄所有不需要移除的元素的索引,稍后一次性移除所有需要移除的元素6 // 性能較高,數組內的元素遷移只要執行一次即可7 var foundFirstNegative = false8 val keepIndexes = for (i <- 0 until a.length if !foundFirstNegative || a(i) >= 0) yield {9 if (a(i) < 0) foundFirstNegative = true 10 i 11 } 12 for (i <- 0 until keepIndexes.length) { a(i) = a(keepIndexes(i)) } 13 a.trimEnd(a.length - keepIndexes.length)?
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的scala学习笔记-数组转换(8)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: scala学习笔记-集合操作(15)
- 下一篇: scala学习笔记-Map与Tuple(