zoukankan      html  css  js  c++  java
  • Scala数组

    1、数组的定义和取值

    object helloworld {
    
      def main(args: Array[String]) {
    
        //java:    int[] arr = new int[10];
        //          int[] arr = new int[]{1,2,3,4}
        //          int[] arr = {1,2,3,4}
    
        //scala:
    //    var arr = new Array[Int](10)  //隐含的调用了apply(10)的方法
    //    for(x<-arr) println(x);//初始化为0
    
        //如果数组有初始值就不用定义数组的类型
        var arr1 = Array(1,2,3);
        var arr2 = Array("hello","woijid");
        //遍历数组
        for(x<-arr1) println(x);
        for(y<-arr2) println(y);
    
        //访问指定的数组元素
        println(arr1(0));//注意这里访问指定的元素用的是小括号
        println(arr2(1));
    
      }
    }

    2、变长数组

    import scala.collection.mutable.ArrayBuffer
    
    object helloworld {
    
      def main(args: Array[String]) {
        //创建数组缓冲区
        var buffer = new ArrayBuffer[Int]();//创建一个数组缓冲对象,中括号里面表示泛型
        buffer += 44;
        buffer += 2;
        buffer += (5);//因为这里+=是一个函数所以可以用.来调用方法
        //+=表示在末尾添加元素
        //++=  表示在末尾添加集合
        buffer ++= Array(1,2,31);
        //因为现在的buffer是一个对象所以可以调用很多的函数
        println(buffer);
    
      }
    }

    3、数据缓冲区对象的方法以及和数组之间的转换

    import scala.collection.mutable.ArrayBuffer
    
    object helloworld {
    
      def main(args: Array[String]) {
        //创建数组缓冲区
        var buffer = new ArrayBuffer[Int]();//创建一个数组缓冲对象,中括号里面表示泛型
        buffer += 44;
        buffer += 2;
        buffer += (5);//因为这里+=是一个函数所以可以用.来调用方法
        //+=表示在末尾添加元素
        //++=  表示在末尾添加集合
        buffer ++= Array(1,2,31);
        //因为现在的buffer是一个对象所以可以调用很多的函数
        println(buffer);
    
        //剔除末尾2个
        buffer.trimEnd(2);
        println(buffer);
    
        //剔除头部1个
        buffer.trimStart(1);
        println(buffer);
    
        //在下标为2的地方插入34
        buffer.insert(2,34);
        println(buffer);
    
        //在下标为0的地方插入11,22,33
        buffer.insert(0,11,22,33);
        println(buffer);
    
        //从下标为0的地方开始移除2个元素
        buffer.remove(0,2);
        println(buffer);
    
        //将数组缓冲区对象转换成数组
       var arr1 =   buffer.toArray;
        for (x<-arr1)println(x);
      }
    }
        //将数组缓冲区对象转换成数组
       var arr1 =   buffer.toArray;
        //遍历数组的两种方法
        for (i<-0  until   arr1.length) println(arr1(i));
        for(x<-arr1) println(x);

    4、yield产生新的数组集合,或者数据缓冲区

    import scala.collection.mutable.ArrayBuffer
    
    object helloworld {
    
      def main(args: Array[String]) {
    
        var arr = Array(1,2,3,4,5,6,7,8);
        /*var result = for (x<-arr) yield x*2;
        for(x<-result) println(x);
        //利用yield产生一个新的数组,但是原来的数组并不会收到影响
        for(y<-arr) println(y);*/
        //对特定的元素进行筛选
        //利用if添加守卫条件
        val result_1 = for(x<-arr if x%2==0) yield x*2;
        for(z<-result_1) println("如果是偶数,就*2====="+z);
    
      }
    }

    5、使用过滤器进行筛选,并通过map映射来改变筛选出来的值

     //通过过滤器来实现数组元素的筛选
        val arr = Array(1,2,3,4,5,6,7);
        //第一个下划线表示通配所有的元素,通过过滤器筛选出偶数,然后通过map映射改变取出的元素的值
        val arr1 =  arr.filter(_ % 2 == 0).map(_ * 2);
        for(x<-arr1) println(x);
    

    6、数组的方法

     val arr = Array(1,2,3,4,5,6);
        val sum = arr.sum;
        val max = arr.max;
        val min = arr.min;
        println(sum+"=="+max+"==="+min);
    数组的排序
    import scala.util.Sorting._
    object helloworld {
    
      def main(args: Array[String]) {
       val arr1 = ArrayBuffer(23,544,2,4,5);
        val newArr =  arr1.toArray;--->对于数据缓冲区对象需要转换为数组才能够进行排序
         quickSort(newArr);
        for(x<- 0 to newArr.length) println(newArr(x));
    
      }
    }
    

    7、数组的分隔

    import scala.util.Sorting._
    object helloworld {
    
      def main(args: Array[String]) {
    
        //数组的分隔
        val arr = Array(1,3,4,5);
        val newArr = arr.mkString("<<",",,",">>");
        for(i<- 0 to newArr.length) print(newArr(i));
    
        //打印结果:<<1,,3,,4,,5>>
    
      }
    }

    8、二维数组的遍历和定义

    
    object helloworld {
    
      def main(args: Array[String]) {
    
        //多维数组
    //    一维数组
    //    val arr = new Array[Int](4);
    //二维数组
       /* val arr  = new Array[Array[Int] ](4);
        arr(0)=Array(1,3,4);
        arr(2) = Array(2,3,5);
       for(x<-arr ;from = x;j<-from) println(j);*/
    
        //在定义的时候赋值
        val arr1 = Array(Array(1,2,3),Array(3,4,5) );
        for(i<-arr1;from = i;j<-from) print(j);
      }
    }
    

    9、使用ofDim来定义多维数组,以及访问多维数组的每一个元素,以及访问数组的长度

    object helloworld {
      def main(args: Array[String]) {
        //定义一个多维数组
        val arr = Array.ofDim[Int](4,5);
        //遍历数组的每个元素
        //for(i<-arr;from = i;j<-from) println(j);
    
        arr(2)(2)=1;
        //访问具体的元素,使用行和列来指定
        println(arr(2)(2));
        //数组的长度
        //行数
        println("数组的长度"+arr.length);
        //列数
        println("第一行的长度:"+arr(0).length);
      }
    }
    
    欢迎关注我的公众号:小秋的博客 CSDN博客:https://blog.csdn.net/xiaoqiu_cr github:https://github.com/crr121 联系邮箱:rongchen633@gmail.com 有什么问题可以给我留言噢~
  • 相关阅读:
    CF359B Permutation
    CF859C Pie Rules
    Contest 156
    Contest 155
    Range Module
    python-环境
    Git 使用
    Contest 154
    生命是一种长期而持续的累积过程
    Contest 153
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10327110.html
Copyright © 2011-2022 走看看