• 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
      }  
      
    }
  • 相关阅读:
    C程序设计语言阅读笔记
    Leetcode: . 存在重复元素 III
    Leetcode : 存在重复元素 II
    Leetcode : 二叉搜索树结点最小距离
    Leetcode: 二叉树的最大深度
    Leetcode: 二叉树的最小深度
    精益创业 埃里克莱斯 读书笔记总结--2020年的第12/100本
    经营最重要的事 梅纳德韦伯 读书笔记总结--2020年的第11/100本
    《创业36条军规 孙陶然》精读 读书笔记总结----《创业必读书第5本》---建立认知:有哪些优秀的创业经验 第3本
    原则 瑞达利欧 读书笔记总结--2020年的第9/100本
  • 原文地址:https://www.cnblogs.com/ak23173969/p/6782852.html
Copyright © 2020-2023  润新知