zoukankan      html  css  js  c++  java
  • Scala学习——集合

    Scala集合

    一、数组

    package top.ruandb.scala.Course04
        object ArrayApp {
     
          def main(args: Array[String]): Unit = {
            //定义数组
            val a = new Array[String](5)
            //直接定义
            val b = Array("java","scala","bash","swift")
            val c=Array(1,2,3,4,5,6,7,8,9,10)
            //数组中常用方法
            println(a.length)
            println(c.sum)
            println(c.max)
            println(c.min)
            println(b.mkString(":")) //以:分割成字符串 :java:scala:bash:swift
            println(b.mkString("<",":",">")) //结果:<java:scala:bash:swift>
     
            //定义变长数组
            val d = scala.collection.mutable.ArrayBuffer[Int]()
            d += 1 //添加元素
            d += (2,3,4,5) //一次性添加多个元素
            d ++= Array(6,7,8)  //直接添加定长数组元素
            println(d.mkString(",")) // 1,2,3,4,5,6,7,8
            d.insert(0,0) //向指定位置添加指定元素
            println(d.mkString(",")) // 0,1,2,3,4,5,6,7,8
            d.remove(0) //删除指定位置的元素
            d.remove(0,3) //从某个位置开始,删除n个元素
            d.trimEnd(2) //从最后面删除n个元素
            d.toArray //转换成定长数组
     
            //遍历数组
            for(ele <- d){
             println(ele)
            }
            for(i <- 0 until c.length){
              println(i)
            }
     
          }
        }  

    二、List(有序的,可重复的)

    package top.ruandb.scala
     
    object ListApp extends  App {
     
      val ln =Nil //定义一个空List
      println(ln)
      val l = List(1,2,3,4,5,6) //定义List
      println(l) 
      println(l.head) //获取头 (1)
      println(l.tail)//获取尾 (2,3,4,5,6)
      val l2 = 0 :: l //(0.1,2,3,4,5,6)
      println(l2)
     
      val l5 = scala.collection.mutable.ListBuffer[Int]()//可变List
      l5 += 1 //添加单个元素
      l5 += (2,3,4) //添加多个元素
      l5 ++= List(5,6,7,8,9) //添加定长List
      print(l5)
      l5 -=1 //移除单个元素
      l5 -=(2,3,4) //移除多个元素
      l5 --=List(5,6,7,8) //移除一个定长List
    }

    三、Set(无序的,不可重复的)

    package top.ruandb.scala.Course04
     
    object SetApp {
     
      def main(args: Array[String]): Unit = {
        val set1 = Set(2,2,3,4) //不可变set
        println(set1) //(2,3,4)
     
        val set2 = scala.collection.mutable.Set[Int]()//可变set,操作同list类似
        set2 += 0
        set2 += (1,2,3,4)
        set2 ++= Set(5,6)
      }
    }

    四、Map(键值对)

    package top.ruandb.scala.Course04
     
    object MapApp {
     
      def main(args: Array[String]): Unit = {
     
        val m1 = Map("jack"-> 10,"lucy"-> 17)//定义Map
        println(m1)
        println(m1("lucy"))
     
        val m2 = scala.collection.mutable.Map("jack"-> 10,"lucy"-> 17)//可变的map
        println(m2)
        println(m2("lucy"))
        m2("lucy") = 99 // mutable Map 的值可修改
        println(m2("lucy"))
     
        val m3 = scala.collection.mutable.HashMap[String , Int]() //定义一个空的Map
        m3 += ("jack" -> 19)
        m3 += ("lucy" -> 99,"lisi" -> 88)
        m3 ++= Map("wangwu" -> 77,"zhaoliu" -> 66)
        println(m3)
     
        //遍历Map
        for((key,value) <- m3){
          println(key,value)
        }
        for( key<-m3.keySet){
          println(key,m3.get(key))
        }
      }
    }

    五、Tuple(元组)

    package top.ruandb.scala.Course04
     
    object TupleApp {
     
      def main(args: Array[String]): Unit = {
        val name = ("jack","lucy","zhangsan","lisi") //定义一个Tuple
        println(name._1 +  ":" + name._2 + ":" + name._3 + ":" + name._4) //取值
     
        //遍历元组
        for(i <-0 until(name.productArity)){
          println(name.productElement(i))
        }
     
      }
    }

    六、Option Some None

    大多数语言都有一个特殊的关键字或者对象来表示一个对象引用的是“无”,在Java,它是null。在Java 里,null 是一个关键字,不是一个对象,所以对它调用任何方法都是非法的。

    为了让所有东西都是对象的目标更加一致,也为了遵循函数式编程的习惯,Scala鼓励你在变量和函数返回值可能不会引用任何值的时候使用Option类型。在没有值的时候,使用None,这是Option的一个子类。如果有值可以引用,就使用Some来包含这个值。Some也是Option的子类。

  • 相关阅读:
    使用 nginx 作反向代理,启用 keepalive 时,遇到 502 错误的调查过程
    docker php安装模块报 Operation not permitted 解决方案
    记一次php压测性能影响很大的参数
    数据库第一章-学习笔记
    P1469 找筷子
    P1597 语句解析
    c语言优势 scanf("%d,%d",&a,&b)==2
    数据库第二章-学习笔记
    数据库 E-R 图之学习笔记
    数据库第六章-学习笔记
  • 原文地址:https://www.cnblogs.com/jnba/p/10677486.html
Copyright © 2011-2022 走看看