数组声明
scala> val a = new Array[Int](10)
a: Array[Int] = Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0)
使用时 a(0)--- 和 Java不同 Java: a[0]
scala> a(0)=1
scala> for(x<-a){print(x)}
1000000000
----------------------------------
scala通过mkString方法把一个集合转化为一个字符串
scala> val b =Array("hello","world","!")
b: Array[String] = Array(hello, world, !)
scala> b.mkString
res9: String = helloworld!
scala> b.mkString("-")
res10: String = hello-world-!
----------------------------------
类型推断:
scala> val c = Array("hello",7)
c: Array[Any] = Array(hello, 7)
----------------------------------
Array长度不可变 c.length 获取长度
scala> val c = Array("hello",7)
c: Array[Any] = Array(hello, 7)
scala> c.length
res11: Int = 2
scala>
scala> c(3)
java.lang.ArrayIndexOutOfBoundsException: 3
... 28 elided
----------------------------------
ArrayBuffer 是可变长的
scala> import scala.collection.mutable._
import scala.collection.mutable._
scala> val ab = new ArrayBuffer[Int]()
ab: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer()
scala> ab(0)=1
java.lang.IndexOutOfBoundsException: 0
at scala.collection.mutable.ResizableArray.update(ResizableArray.scala:48)
at scala.collection.mutable.ResizableArray.update$(ResizableArray.scala:47)
at scala.collection.mutable.ArrayBuffer.update(ArrayBuffer.scala:48)
... 28 elided
注意添加元素的方式
scala> ab += 1
res14: ab.type = ArrayBuffer(1)
scala> ab += 2
res15: ab.type = ArrayBuffer(1, 2)
scala> ab += 3
res16: ab.type = ArrayBuffer(1, 2, 3)
----------------------------------
ArrayBuffer 添加Array 使用 ++=
scala> val f = Array(100,200,300)
f: Array[Int] = Array(100, 200, 300)
scala> ab ++=f
res18: ab.type = ArrayBuffer(1, 2, 3, 100, 200, 300)
----------------------------------
ArrayBuffer 插入元素
scala> ab.insert(3,999)
scala> print(ab)
ArrayBuffer(1, 2, 3, 999, 100, 200, 300)
----------------------------------
ArrayBuffer 移除元素
scala> ab.remove(3)
res21: Int = 999
scala> print(ab)
ArrayBuffer(1, 2, 3, 100, 200, 300)
----------------------------------
ArrayBuffer删掉多个元素
scala> print(ab)
ArrayBuffer(1, 2, 3, 100, 200, 300)
scala> ab.remove(3,3)
scala> print(ab)
ArrayBuffer(1, 2, 3)
----------------------------------
Array 和 ArrayBuffer 的转换:toArray toBuffer
scala> val abArray = ab.toArray
abArray: Array[Int] = Array(1, 2, 3)
scala> val abArrayBuffer = abArray.toBuffer
abArrayBuffer: scala.collection.mutable.Buffer[Int] = ArrayBuffer(1, 2, 3)
----------------------------------
遍历 数组
scala> for(x<- 0 until ab.length){print(ab(x))}
12345678910
scala>
----------------------------------
指定步长
scala> for(x<- 0 until (ab.length,2)){print(ab(x))}
13579
scala>
----------------------------------
反向遍历 .reverse
scala> for(x<- (0 until (ab.length,2)).reverse ){print(ab(x))}
97531
----------------------------------
简单的遍历
scala> for(x <- ab) print(x)
12345678910
----------------------------------
数组元素求和
scala> val a = Array(1,2,3,4,5)
a: Array[Int] = Array(1, 2, 3, 4, 5)
scala> val asum = a.sum
asum: Int = 15
----------------------------------
数组最大值 最小值
scala> val a = Array(1,2,3,4,5)
a: Array[Int] = Array(1, 2, 3, 4, 5)
scala> a.max
res42: Int = 5
scala> a.min
res43: Int = 1
----------------------------------
数组排序
scala> import scala.util._
import scala.util._
scala> Sorting.quickSort(a)
scala> for(x<- a) print(x+" ")
0 1 2 3 3 4 5 7 8 77 88 99
----------------------------------
数组 转为字符串
scala> a.mkString("-")
res51: String = 0-1-2-3-3-4-5-7-8-77-88-99
scala> a.mkString("<",",",">")
res52: String = <0,1,2,3,3,4,5,7,8,77,88,99>
----------------------------------
转换数组 把每个元素转变为其 平方
scala> val a = Array(1,2,3,4,5,6,7,8,9,10)
a: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> val b = for(x<- a) yield x*x
b: Array[Int] = Array(1, 4, 9, 16, 25, 36, 49, 64, 81, 100)
----------------------------------
ArrayBuffer 把每个元素 转为其平方
scala> import scala.collection.mutable._
import scala.collection.mutable._*
scala> c ++= Array(1,2,3,4,5,6)
res53: c.type = ArrayBuffer(1, 2, 3, 4, 5, 6)
scala> val d = for(x <- c ) yield x*x
d: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(1, 4, 9, 16, 25, 36)
----------------------------------
使用 filter 过滤数组
scala> a
res56: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
scala> a.filter( _ % 2 ==0)
res57: Array[Int] = Array(2, 4, 6, 8, 10)
scala> a.filter( _ ==4)
res58: Array[Int] = Array(4)
scala> a.filter( _ < 5)
res59: Array[Int] = Array(1, 2, 3, 4)
----------------------------------
使用map
scala> a.filter( _ % 2 ==0).map(_ * 2)
res60: Array[Int] = Array(4, 8, 12, 16, 20)
scala> a.filter( _ % 2 ==0).map(x=> x*x)
res62: Array[Int] = Array(4, 16, 36, 64, 100)