• 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)
      
  • 相关阅读:
    【bzoj2669】[cqoi2012]局部极小值 容斥原理+状压dp
    默默的等式
    P3403 跳楼机
    作物
    【bzoj3174】[Tjoi2013]拯救小矮人
    【bzoj4976】宝石镶嵌
    BZOJ2121-字符串游戏
    mzf的考验
    牛客网round1
    jloi2015
  • 原文地址:https://www.cnblogs.com/72808ljup/p/5421249.html
Copyright © 2020-2023  润新知