Scala-基础-数组(1)

import junit.framework.TestCase
import scala.collection.mutable.ArrayBuffer;

//数组(1)
//知识点-定义数组,变长数组,遍历数组,数组转换
class Demo1 extends TestCase {

  //定义数组
  def test_^^() {
    //定义数组语法1 val 变量名 = new Array[类类型](长度) 相当于java中  int indexs [] = new int [10];
    val nums = new Array[Int](10)
    //定义数组语法2 val 变量名 = Array(具体值,用逗号分开) 相当于java中    int indexs [] = {1,2,3};
    //数组类型是推断出来的
    val cums = Array(1, 2, 3)

    //通过 数组变量(下标) 访问数组中的元素 而不是 数组变量[下标] 
    val n1 = nums(1) //相当于 int n1 = nums[1];
  }

  //变长数组
  def test_@@() {
    //定义变长数组语法1 val 变量名 = new ArrayBuffer[类类型]()  
    val nums = new ArrayBuffer[Int]()
    //尾端添加元素
    nums += 10
    //尾端添加多个元素
    nums += (5, 5, 9, 10)
    //尾端添加其他数组或集合
    val cums = Array(1, 2, 3, 4, 5)
    nums ++= cums
    //在指定下标插入元素
    nums.insert(1, 0)
    nums.insert(1, -1, -2, -3)
    //移除尾部2个元素
    nums.trimEnd(2)
    //移除元素
    nums.remove(2)
    //移除指定下标 几个元素
    nums.remove(1, 2)

    //变长数组转为固定长度数组
    nums.toArray
    //数组转为变长数组
    val kums = Array(0);
    kums.toBuffer
  }

  //遍历数组
  def test_&&() {
    val cums = Array(1, 2, 3)
    //正序遍历
    for (i <- 0 until cums.length) println(cums(i))
    for (i <- 0.until(cums.length)) println(cums(i))
    // 0 until 10 返回 0 到9 
    // 0 to    10 返回0 到10
    //实际上 0 until 10 底部是是用过方法调用:  0.until(10)
    val k = 0 until 10
    //倒序遍历  访问函数时 点忽略了  () 也忽略了 单个参数或者无参数的前提
    for (i <- (0.until(cums.length)).reverse) println(cums(i))
    for (i <- 0 until cums.length reverse) println(cums(i))
    //遍历 间隔 
    for (i <- 0 until cums.length) println()

    //增强for循环
    for (ele <- cums) println(ele)
  }
  
  //数组转换 
  //yield  保存每次迭代出的变量,并且将执行某些动作后保存到新的数组中去
  def test_%%(){
      val array = Array(12,-1,-2,0)
      val rs1 = for(ele <- array) yield (ele+10)%3 
      val rs2 = for(ele <- array if ele%2==0) yield (ele+11)*2  
  }
  
  //常用算法
  def test_##(){
    val array = Array(-1,8,5,15)
    val s1 = array.sum//合集
    val s2 = array.max//最大值
    val s3 = array.min//最小值
    val s4 = array.sorted//排序
    scala.util.Sorting.quickSort(array)//快速排序
  }  

  //多维数组
  def test_!!(){
    val moreArray = new Array[Array[Int]](10)
    val moreArray2 = Array.ofDim[Double](2, 2)
    moreArray(0)(0) = 2
    
    moreArray(0) = new Array[Int](10)
    for(i <- 0 until moreArray.length){
       moreArray(i) = new Array[Int](i+1)
    }
    
    for(x <- moreArray2;i<- 0 until x.length) x(i) = 5
  }  
  
}
原文地址:https://www.cnblogs.com/ak23173969/p/6782852.html