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 有什么问题可以给我留言噢~
  • 相关阅读:
    第十二章学习笔记
    UVa OJ 107 The Cat in the Hat (戴帽子的猫)
    UVa OJ 123 Searching Quickly (快速查找)
    UVa OJ 119 Greedy Gift Givers (贪婪的送礼者)
    UVa OJ 113 Power of Cryptography (密文的乘方)
    UVa OJ 112 Tree Summing (树的求和)
    UVa OJ 641 Do the Untwist (解密工作)
    UVa OJ 105 The Skyline Problem (地平线问题)
    UVa OJ 100 The 3n + 1 problem (3n + 1问题)
    UVa OJ 121 Pipe Fitters (装管子)
  • 原文地址:https://www.cnblogs.com/flyingcr/p/10327110.html
Copyright © 2011-2022 走看看