美文网首页
scala集合基础

scala集合基础

作者: 初夏时的猫 | 来源:发表于2021-12-13 01:16 被阅读0次

    1)sacla集合有三大类:序列Seq,集Set,映射Map。所有集合都扩展自Iterable特质。
    2)对于几乎所有集合类,scala都提供了可变和不可变两种版本。分别位于以下两个包
    ** 不可变集合:scala.collection.immutable**
    ** 可变集合: scala.collection.mutable**

    不可变集合

    图片.png

    可变集合

    图片.png

    数组

    不可变数组

    1)修改数组值

        a1(0) = 1
        a1.update(0,5)
    

    2)添加元素

        //添加在后面
        val a3 = a1:+5
        println(a3.mkString(","))
       //在前面添加 
       val a4 = 6+:a1
        println(a4.mkString(","))
    

    可变数组(ArrayBuffer)
    增加元素

        a1.+=(2,3)
        a1.append(4,5)
        a1+=6
        a1.insert(0,7,8)
    

    修改元素

        a1(1) = 2
    

    可变和不可变数组转换

    arr.toBuffer
    arr.toArray
    

    注:多维数组最简单创建方式

    //二维数组 三行四列   三个一维数组,每个一维数组中有四个元素
    val arr = Array.ofDim[Int](3,4)
    

    列表List

    不可变List
    添加元素

        val list = 1::2::3::4::6::7::Nil
        val list2 = 1::2::Nil.::(3)
        //1234567
        println(list.mkString(","))
        //123
        println(list2.mkString(","))
        //在前面添加
        val list3 = list.+:(5,6,7,8)
    

    列表合并

        val list3 = list:::list2
        val list4 = list++list2
    

    可变ListBuffer

    添加

        val buffer = ListBuffer(1,2,3)
          buffer+=4
          buffer.append(5)
          buffer.insert(0,0)
    

    修改

    buffer(1) = 6
    buffer.update(1,7)
    

    删除

          buffer.remove(1)
          //根据值删除
          buffer-=9
    

    Set

    可变

    ++=
    --=
    .+=(T)[add()]
    .-=(T
    )[remove()]

    不可变/可变

    .+
    .++
    .-
    .--

    Map

    可变

    map.update("d",5)
    map("d") = 5
    ++=
    --=
    +=(put)
    -=(remove)

    不可变/可变

    .++
    .--
    .+
    .-

    getOrElse

    元组

    元组也是可以理解为一个容器,可以存放各种相同或不同类型的数据。
    元组中最大只能有 22 个元素

    //( 1)声明元组的方式: (元素 1,元素 2,元素 3)
    val tuple: (Int, String, Boolean) = (40,"bobo",true)
    //( 2)访问元组
    //( 2.1)通过元素的顺序进行访问,调用方式: _顺序号
    println(tuple._1)
    println(tuple._2)
    println(tuple._3)
    //( 2.2)通过索引访问数据
    println(tuple.productElement(0))
    //( 2.3)通过迭代器访问数据
    for (elem <- tuple.productIterator) {
    println(elem)
    }
    //( 3) Map 中的键值对其实就是元组,只不过元组的元素个数为 2,称之为
    对偶
    val map = Map("a"->1, "b"->2, "c"->3)
    val map1 = Map(("a",1), ("b",2), ("c",3))
    map.foreach(tuple=>{println(tuple._1 + "=" + tuple._2)})
    }
    

    注:Set和Map是trait,list是sealed abstract class 所以无法new

    相关文章

      网友评论

          本文标题:scala集合基础

          本文链接:https://www.haomeiwen.com/subject/vmwdfrtx.html