2. scala中的数组

一. 数组声明

  1. 定长数组
    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)
    
  2. 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)
    
    

二. 数组的操作

  1. 遍历

    //正序遍历
    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,
    
  2. 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)
    
  3. 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)   //带变量类型
    
    
  4. 多维数组

    //规则的多维数组
    scala> Array.ofDim[Int](2,2)
    res46: Array[Array[Int]] = Array(Array(0, 0), Array(0, 0))
    
    //不规则的多维数组
    
    
  5. 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)
    
原文地址:https://www.cnblogs.com/72808ljup/p/5421249.html