zoukankan      html  css  js  c++  java
  • Scala数据结构(数组,Map和Tuple)

    package com.zy
    import scala.collection.mutable
    import scala.collection.mutable.ArrayBuffer
    
    object test3 {
      def main(args: Array[String]): Unit = {
        //function1()
    
        //function2()
    
    
    
        //function3()
    
        //function4()
    
        //function5()
    
        //function6()
    
    
        //function8()
    
        //function9()
    
        function10()
    
      }
    
      //数组
      //不变长度数组(真数组)
      def function1():Unit={
        val ints=new Array[Int](20)
        //赋值
        ints(3)=999
    
        for (i<- ints){
          println(i)
        }
    
        var arr=Array(1,"中国",9.9)
        for (s<- arr){
          println(s)
        }
        //取值  (下标)
        println(arr(1))
    
      }
      def function2():Unit={
        val arr=Array.fill(3)(math.random)
    
        for (s<- arr){
          println(s)
        }
      }
    
    
      //变长数组
      def  function3():Unit={
        val  ab1=new ArrayBuffer[String]()
        val ab2=ArrayBuffer[Int](100,200)
    
        //ab1.insert(4,"中国","日本")//Exception in thread "main" java.lang.IndexOutOfBoundsException: 4
        ab1.insert(0,"中国","日本")
        /*for (v<- ab1){
         println(v)
        }*/
    
        ab1+=("美国","法国")//追加     符号更加简约
        for (v<- ab1){
          println(v)
        }
    
        ab1++=Array("1","3","6")//追加任何集合
        println("----------------------")
        for (v<- ab1){
          println(v)
        }
    
        ab1.insert(1,"菲律宾")//在第一个元素后面
        println("----------------------")
        for (v<- ab1){
          println(v)
        }
    
        println("----------------------")
        for (v<- ab1 if v!="日本"){
          println(v)
        }
    
      }
    
      def  function4():Unit={
        val arr=ArrayBuffer[Int](1,4,5,6,0)
        val res=for (i<- 0 until arr.length) yield  arr(i)*2
        println(res)
    
        // _代表数组中每个元素
        //arr.filter(_>0)  判断数组中大于0的元素,返回一个数组
        //map(_*2)     每个元素乘于2
        arr.filter(_>0).map(_*2).foreach(println(_))
    
      }
    
      def  function5():Unit={
    
        var arr=Array(6,1,9,0,7)
        println(arr.max)
        println(arr.sum)
        arr.sorted.foreach(println(_))//升序
        println("-----------")
    
        //    _>_  两个元素比较,大的放前面          降序
        arr.sortWith(_>_).foreach(println(_))
        println("---------------")
        arr.sortWith(_>_).foreach(println(_))//升序
    
        println(arr.mkString("And"))//分隔符
        println(arr.mkString("<",",",">"))//<6,1,9,0,7> //指定前缀、分隔符、后缀
    
    
    
      }
    
    
      //多维数组
      def function6():Unit={
        var array=new Array[Array[Int]](5)
        array(0)=Array(1,4,5)
        array(1)=Array(2,4,5)
        array(2)=Array(6,4,5)
        for (a<-array if a!=null;v<-a){//双层循环
          println(v)
        }
    
        println("-------------------")
        var arr2=Array(Array(1,2,3),Array(4,5,6),Array(7,8,9))
        for (a<-arr2 ;v<-a){
          println(v)
        }
    
    
    
      }
    
      def function7():Unit={
        val arr=Array(4,5,7)
    
        //把定长转变长
        val buffer = arr.toBuffer
        buffer.foreach(println(_))
    
        //变长转定长
        val ab2=ArrayBuffer[Int](100,200)
       val array=ab2.toArray
    
      }
    
    
      //Map
      def function8():Unit={
        //不可变map(值不能改变)
        var p=Map("aa"->12,"bb"->15,"cc"->28)
        //  ->是用来创建元组("aa",12) ("bb",15)  ("cc",28)
        //元组:("a",1.99,33,"b") 一组数据【任意类型】
    
        println(p.get("aa"))//Some(12)
        println(p.get("pppp"))//None
    
        //可变map(值可变)
        val p2=scala.collection.mutable.Map("xx"->11,"yy"->22)
        //空的可变map
        val hashMap = new mutable.HashMap[String,Int]
    
    
    //取值
        println(p2.get("pp"))
        println(p2.getOrElse("xx",999))// 如果映射包含键“xx",返回对应的值;否则,返回999
    
    
        //更新Map中的值
        p2("xx")=100
        println(p2.get("xx"))
        //追加
        p2+=("g"->1,"h"->2);
        println(p2)
        //移除
        p2-=("xx")
        println(p2)
    
    
        //不可变映射   也可以追加
        p+=("zz"->999,"mm"->888)
        println(p)
        p-=("aa")
        println(p)
    
    
        //遍历map
        for ((k,v)<-p){
          println("k:"+k+"	"+"v:"+v)
        }
    
        //遍历键的集合
        for (k<- p.keySet) println("k:"+k)
    
        //遍历值的集合
        for (v<- p.values) println("v:"+v)
    
        println("-------------------------")
        //
        p.foreach(me=>println(me._1))
        //
        p.foreach(me=>println(me._2))
        //键值对
        p.foreach(println(_))
    
        println("--------------------------------")
        //反转键值对
        for ((k,v)<- p) yield println(v,k)
    
        var newMap=for ((k,v)<- p) yield(v,k)
        println(newMap)
    
    
    
    
      }
    
      def function9():Unit={
    
        // 会按照key的字典顺序进行排序
        val mm= scala.collection.immutable.SortedSet("f"->9,"a"->3,"w"->8)//按照字典顺序排序
        println(mm)
    
        val months = scala.collection.mutable.LinkedHashMap("January" -> 1,"February" -> 2,"March" -> 3)    // 创建一个顺序的Map
        months += ("Fourth" -> 4)
        println("months=> " + months)   // months=> Map(January -> 1, February -> 2, March -> 3, Fourth -> 4)
    
      }
    
    
      //元组
      def function10():Unit={
       
        val tup=(105,"中国")
        //空格在拼接多个过程中会引起歧义
        println(tup._1+"	"+tup._2)
    
        //元组最大  Tuple22   Tuple3里面有3个元素
        val tup2 = new Tuple3[String,Int,Int]("aa",11,44)
        val (a,b,c)=tup2
        println(a)
        println(b)
        println(c)
    
    
        //分组   按元素(_)是否是大写区分
        println("NewAbcD".partition(_.isUpper))//分组后形成元组
    
        //遍历
        tup2.productIterator.foreach(println(_))//最简单方式,但是不让拼接"	"
        println()
        tup2.productIterator.foreach(x=>println(x+"	"))
    
      }
    
    }
  • 相关阅读:
    [学习笔记]多维偏序
    SCOI2009 游戏
    置换群和Burnside引理,Polya定理
    AC自动机——多个kmp匹配
    51nod 1667 概率好题
    分块——优化的暴力
    [Cqoi2014]数三角形——组合数
    C++ 中的导致编译错误汇总
    哈夫曼树Huffman
    导出查询结果到csv文件
  • 原文地址:https://www.cnblogs.com/qfdy123/p/11426519.html
Copyright © 2011-2022 走看看