随笔 - 18  文章 - 0  评论 - 0  阅读 - 11337

Scala集合总结

Scala同时支持可变集合和不可变集合,包含两个包:

  可变集合:scala.collection.mutable

  不可变集合:scala.collection.immutable

Scala默认采用不可变集合,对于几乎所有的集合类,Scala都同时提供了可变(mutable)和不可变(immutable)的版本

Scala的集合有三大类:序列Seq、集Set、映射Map,所有的集合都扩展自Iterable特质

 

 1、元组:可以存放各种不同类型的数据

  val tuple1 = (1,2,"hello",true)

  访问第一个元素:tuple1._1

  元组中最多有22个元素

2、数组

  创建定长数组

    val arr1 = new Array[Int](10)

    val arr2 = Array(1,2,3)

  创建可变数组

    val arr3 = new ArrayBuffer[Int]()

    val arr4 = ArrayBuffer[Int]()

    添加元素:arr3.append(1)

  定长数组和可变数组互相转换

    定长数组转可变数组:arr1.toBuffer  返回结果才是一个可变数组,arr1本身没有变化

    可变数组转定长数组:arr3.toArray  返回结果才是一个定长数组,arr3本身没有变化

3、列表

  创建定长列表

    val list1 = List(1,2,3) //创建时直接分配元素,默认是不可变的,可以存放任何数据

    val nil = Nil //创建一个空列表

    list1(1) //通过索引访问元素,在这访问第二个元素

  列表追加元素

    list1 :+ 4 //在列表后面添加元素,并生成新的列表

    5 :+ list1 //在列表前面添加元素,并生成新的列表

    符号 :: 表示向集合中添加元素,集合对象放在最右边

    符号 ::: 表示将集合中的每一个元素加入到另一个集合中

  创建可变列表

    val buffer1 = new ListBuffer[Int]

    val buffer2 = ListBuffer(1,2,3)

  可变列表添加元素

    buffer1.append(1)

    buffer1 += 2

    buffer1 ++= buffer2  // 符号 ++ 用于连接两个集合,::: 只能用于List类型的集合

4、映射Map

  Scala中不可变Map是有序的,可变Map是无序的,默认情况下是不可变map

  创建可变Map

    val map1 = new scala.collection.mutable.HashMap[String,Int]

    val map2 = scala.collection.mutable.Map("zhangsan" -> 10 , "lisi" -> 20)

  获取key对应的value

    map2("lisi") //如果key不存在,会抛出异常

    map2.contains("wangwu") //判断key是否存在

    map2.get(key).get //get(key)返回的是一个Option对象,Some类型或者是None

    map2.getOrElse() //如果key存在,则返回对应的值;如果key不存在,则返回指定的默认值

  可变map添加元素

    map2 += ("wangwu" -> 30)

    map2 + ("zhaoliu" -> 40 , "tianqi" -> 40)

  可变map删除元素

    map2 -= ("zhangsan" , "lisi") //可以写多个key,没有对应的key也不会报错

    

  

posted on   吴玉川  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示