Scala——4. Scala collection

本文详细介绍了Scala中的四种主要集合类型:Map(包括可变与不可变)、Tuple、List和Set。对于Map,讨论了如何创建、修改和遍历;Tuple部分介绍了元组的创建与取值;List则讲解了不可变与可变列表的操作,如添加、删除元素;Set部分阐述了其无序和唯一性的特点,并展示了相关操作。
摘要由CSDN通过智能技术生成

注意:通常我们在创建一个集合时会用val这个关键字修饰一个变量(相当于java中的final),那么就意味着该变量的引用不可变,该引用中的内容是不是可变,取决于这个引用指向的集合的类型。

1. 映射 Map

Map分为可变map和不可变Map 默认情况下是不可变Map
不可变Map不能添加、修改、删除键值对p

定义格式:
     val m1 = Map(k1 -> v1,k2 -> v3,k3 -> v3)
     val m2 = Map((k1,v1),(k2,v2),(k3,v3))

获取值:(可变Map和不可变Map都适用)
     m1(k1) = v1
     m1.get(k1) = v1
     m1.getOrElse(k1,默认值)     通过key获取value,有key对应的值则返回,没有就返回默认值
     m1.keySet
     m1.Keys

可变Map:
     手动导包**import scala.collection.mutable.Map
     元素值的修改:
          m1(k1) = 新k
          m1 += (键->新值, 键->新值, …)
     增加元素
          m1 += (k3->v3)
          m1 += ((k3,v3))
     删除元素:只需要指定key就可以
          m1 -= (k1)
          m1.remove(k1)

Map遍历:
     for(i <- m1.keys) println(i + “—” + m1(i))
     for(i <- m1.keySet) println(i + “—” + m1(i))
     for((x,y) <- m1) println(x + “—” + y) 模式匹配遍历 重点掌握
     m1.foreach{case(x,y) => println(x + “—” + y)}

案例:

  • 不可变 Map
scala> val m1 = Map("name"->"zoie","age"->20)
m1: scala.collection.immutable.Map[String,Any] = Map(name -> zoie, age -> 20)

scala> val m2 = Map(("name","zoie"),("age",20))
m2: scala.collection.immutable.Map[String,Any] = Map(name -> zoie, age -> 20)

scala> m1.get("age")
res112: Option[Any] = Some(20)

scala> m1("age")
res113: Any = 20

scala> m1("age")=30
<console>:14: error: value update is not a member of scala.collection.immutable.                                                                               Map[String,Any]
       m1("age")=30
       ^

scala> m1("id")
java.util.NoSuchElementException: key not found: id
  at scala.collection.MapLike$class.default(MapLike.scala:228)
  at scala.collection.AbstractMap.default(Map.scala:59)
  at scala.collection.MapLike$class.apply(MapLike.scala:141)
  at scala.collection.AbstractMap.apply(Map.scala:59)
  ... 32 elided

scala> m1.getOrElse("id",1)
res116: Any = 1

scala> m1
res117: scala.collection.immutable.Map[String,Any] = Map(name -> zoie, age -> 20                                                                               )
  • 可变 Map
scala> import scala.collection.mutable.Map
import scala.collection.mutable.Map

scala> val m3 = Map(("name","zoie"),("age",20))
m3: scala.collection.mutable.Map[String,Any] = Map(age -> 20, name -> zoie)

scala> m3("age")
res127: Any = 20

scala> m3("age")=18

scala> m3
res129: scala.collection.mutable.Map[String,Any] = Map(age -> 18, name -> zoie)

更新多个键值对
scala> m3 += ("name"->"amy","age"->20)
res159: m3.type = Map(age -> 20, name -> amy)


scala> m3 += ("id"->1)
res131: m3.type = Map(age -> 18, name -> zoie, id -> 1)

scala> m3 += (("city","shanghai"))
res132: m3.type = Map(city -> shanghai, age -> 18, name -> zoie, id -> 1)

scala> m3 -= ("city")
res133: m3.type = Map(age -> 18, name -> zoie, id -> 1)

scala> m3.remove("id")
res134: Option[Any] = Some(1)

scala> m3
res135: scala.collection.mutable.Map[String,Any] = Map(age -> 18, name -> zoie)

遍历Map

scala> m1
res145: scala.collection.immutable.Map[String,Any] = Map(name -> zoie, age -> 20)

scala> for(i 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值