scala(集合)-第四天

1、数组
    定长数组
        val a = new Array[String](5)    //长度为五
        a.length    //5
        a(1)="hello"    //赋值

        val b = Array("hadoop","spark")    //底层调用的apply,在apply中调用new Array[]()

        val c = Array(1,2,3,4,5,6,7,8,9)
        c.mkString    //123456789
        c.mkString(",")    //1,2,3,4,5,6,7,8,9
        c.mkString("<",",",">")    //<1,2,3,4,5,6,7,8,9>
        c.toString    //[I@9e54c59
    变长数组
        val d = scala.collection.mutable.ArrayBuffer[Int]()
        d.length    //0
        d += 1
        d += 2
        d += (3,4,5)
        d ++= Array(6,7,8)
        d.insert(0,0)    //n:Int,eles:A*
        d.remove(1,1)    //n:Int,count:Int     从n开始删除count个元素
        d.trimEnd(2)    //删除后两个,从尾巴开始删

        println(d)    //ArrayBuffer(1,2)
        
        for(ele <- d){
            println(ele)    
        }
        
        for(i <- 0 until c.length)

        for(i <- (0 until c.length).reverse)    //从后往前遍历

        d.toArray    //变成定长数组,从变长到鼎昌

2、List
    Nil    //scala.collection.immutable.Nil.type = List() 即Nil是空集合

    定长
        val l = List(1,2,3,4,5)    //一个List是油一个head和一个tail构成的
        l.head    //1
        l.tail    //List(2,3,4,5)

        val l2 = 1 ::Nil      //List(1)
        val l3 = 2 :: l2    //List(2,1)

    可变
        val l5 = scala.collection.mutable.ListBuffer[Int]()
        l5 += 2
        l5 +=(3,4,5)
        l5 ++= List(6,7,8,9)

        l5 -=2
        l5 -=(1,3)    //有就删,没有就不管,不会报错

扫描二维码关注公众号,回复: 4735298 查看本文章

        l5.isEmpty
        l5.head    //与List相同
        l5.tail
        l5.tail.head

        l5.toList
        l5.toArray

        def sum(num:Int*):Int={
            if(nums.length == 0){
                0
            }else{
                nums.head + sum(nums.tail:_*)    //. :_*将Seq转变为可变参数
            }
        }

3、Set(无序,不重复)
    不可变
        val set = Set(1,2,2,1,4,3)    //scala.collection.immutable.Set[Int] = Set(1,2,4,3)

    可变
        val set = scala.collection.mutable.Set[Int]()

    //用法与list相同

4、Map
    不可变
        val a  = Map("pk"->18,"messi"->20)
        a("pk")    //18
        a("pk")=19    //报错

    可变
        val b = scala.collection.mutable.Map("pk"->18,"messi"->20)
        b("pk")=19    //可以运行
        b.getOrElse("pk",9)    //有就取,没有就用9
        b.get("pk")    //Option[Int]=Some(18)
        b.get("pk").get     //18

        b("lisi")=40
        b += ("wangwu"->4,"zhaoliu"->5)
        b -= "wangwu"    //只需要指定key

        val c = scala.collection.mutable.HashMap[String,Int]()    //c:scala.collection.mutable.HashMap[String,Int]=Map()

        遍历
            for((key,value)<-b){
                println(key +":"+value)
            }

            for(key <- b.keySet){
                println(key + ":"+ b.getOrElse(key,9))
            }

            for(value <- b.values){
                println(value)
            }

            for((key,_)<-b){
                println(key +":"+b.getOrElse(key,9))
            }


5、Option&Some&None
    case object None extedns Option[Nothing]{
        def isEmpty = true
        def get = throw new NoSuchElementException("None.get")
    }

    final case class Some[+A](x: A) extends Option[A]{
        def isEmpty = false
        def get = x
    }
    

6、Tuple
    元组
        val a = (1,2,3,4,5)

        a._1
        a._2

    遍历
        for (i <- 0 until (a.productArity)){
            println(a.productElement(i))
        }

        val hostPort =("localhost",8080)
        hostPort._1
        hostPort._2

猜你喜欢

转载自blog.csdn.net/weixin_42898914/article/details/85533511
今日推荐