一. 数组声明
- 定长数组
scala> new Array[String](5) res1: Array[String] = Array(null, null, null, null, null) scala> Array("a","b",1) res4: Array[Any] = Array(a, b, 1)
- ArrayBuffer
scala> import scala.collection.mutable.ArrayBuffer import scala.collection.mutable.ArrayBuffer scala> b += 11 res0: b.type = ArrayBuffer(11) scala> val arr2 = Array(22,23) arr2: Array[Int] = Array(22, 23) scala> b ++= arr2 res1: b.type = ArrayBuffer(11, 22, 23) scala> b.insert(1,0) scala> b res4: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(11, 0, 22, 23) scala> b.remove(2) scala> b res6: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(11, 0, 23)
二. 数组的操作
-
遍历
//正序遍历 scala> 0 until b.length res7: scala.collection.immutable.Range = Range(0, 1, 2) scala> for(i <- 0 until b.length) print(b(i)+",") 11,0,23, //逆序遍历 scala> (0 until b.length).reverse res10: scala.collection.immutable.Range = Range(2, 1, 0) scala> for(i <- (0 until b.length).reverse) print(b(i)+",") 23,0,11, //简单遍历 scala> for(i <- b) print(i+",") 11,0,23,
-
filter,map与yield,守卫
for循环中使用守卫过滤元素,用yield产生集合的效果和对数组对象使用filter再使用map的效果相同scala> for(i <- b if i%2==1) yiel d i*2 res17: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(22, 46) scala> b.filter(_%2 == 1).map(_*2) res15: scala.collection.mutable.ArrayBuffer[Int] = ArrayBuffer(22, 46)
-
sum,max,sortWith,mkString
scala> val arr = Array(1,2,3) arr: Array[Int] = Array(1, 2, 3) scala> arr.sum res28: Int = 6 scala> arr.max res29: Int = 3 scala> arr.sortWith(_>_) res38: Array[Int] = Array(3, 2, 1) // Array用mkString显示内容好,ArrayBuffer使用toString显式好 scala> arr.mkString(",") res39: String = 1,2,3 scala> arr.toString res40: String = [I@22ab5262 scala> buffer.mkString(",") res41: String = 11,34,23 scala> buffer.toString res42: String = ArrayBuffer(11, 34, 23) //带变量类型
-
多维数组
//规则的多维数组 scala> Array.ofDim[Int](2,2) res46: Array[Array[Int]] = Array(Array(0, 0), Array(0, 0)) //不规则的多维数组
-
scala的ArrayBuffer和java的ArrayList转换
import java.io.{BufferedReader, InputStreamReader} import scala.collection.mutable.ArrayBuffer import scala.collection.JavaConversions.bufferAsJavaList //隐士转换 val cmd = ArrayBuffer("ls","-al","/home/lj") val builder: ProcessBuilder = new ProcessBuilder(cmd) //ProcessBuilder接受ArrayList,隐士转换后可接受ArrayBuffer val process: Process = builder.start() val reader: BufferedReader = new BufferedReader(new InputStreamReader(process.getInputStream)) var str = ""; while((str=reader.readLine())!=null) println(str)