Scala for the impatient: ch3
定長數組用Array, 不定長數組用ArrayBuffer
在ArrayBuffer尾端添加或移除元素是高效操作(amortized constant time)
- += , ++= , .trimEnd()
- 也可以從中插入元素,但因為所有元素會平移,因此效率變低
- .insert(
, ), .remove( , )
- .insert(
定長數組與不定長數組轉換
- .toBuffer, .toArray
for loop要窮盡所有element用until 配 .length而不是to 配 .length (原因:index從0開始)
- 0 until 10 // 0.until(10)
- 0 to 10
for loop
-
for(i <- 區間)
- for(i <- 0 until a.length) //窮盡所有i
- for(i <- 0 until (a.length,2) ) //兩個一跳
- for(i <- (0 until a.length).reverse ) //尾端開始窮盡
-
for(ele <- a) //不用額外下標,直接訪問數組元素
-
val aa = Array(2,3,5,7,11); val result = for(ele <- aa) yield 2 * ele
-
yield 循環會創建一個與原始集合相同的新集合,此例新集合為Arrary
-
for(ele <- a if ele%%2==0) yield ele*2 //針對ele做判斷
-
如同a.filter(%2==0).map(2*)
-
val first = true; for(i <- 0.until(a.length if a(i)>0 ||
)) yield {if(a(i)<0) first=false;i}
Array ArrayBuffer運算:
- ArrayBuffer("a","b")+="c"--=Array("a","b") //新增一個c然後刪除含「首度出現a,b」的元素
- Array(1,7,2,9).sum
- Array("aaaa","a","bbbbbbbbb")
- Array.min
- Array.sortWith(>)
- Array.mkString("<",","">") //前綴、中間分隔符號、後綴
- Array.toString //只報告類型