Scala>scala映射

映射

Map可以称之为映射。它是由键值对组成的集合。在scala中,Map也分为不可变Map和可变Map。


不可变Map

语法

val/var map = Map(键->值, 键->值, 键->值...) // 推荐,可读性更好
val/var map = Map((键, 值), (键, 值), (键, 值), (键, 值)...)

参考代码

scala> val map = Map("zhangsan"->30, "lisi"->40)
map: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 40)
​
scala> val map = Map(("zhangsan", 30), ("lisi", 30))
map: scala.collection.immutable.Map[String,Int] = Map(zhangsan -> 30, lisi -> 30)
​
// 根据key获取value
scala> map("zhangsan")
res10: Int = 30

可变Map

定义
定义语法与不可变Map一致。但定义可变Map需要手动导入import scala.collection.mutable.Map

scala> val map = Map("zhangsan"->30, "lisi"->40)
map: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30)
​
// 修改value
scala> map("zhangsan") = 20

Map基本操作

基本操作

  • 获取值(map(key))
  • 获取所有key(map.keys)
  • 获取所有value(map.values)
  • 遍历map集合
  • getOrElse
  • 增加key,value对
  • 删除key

示例
参考代码

scala> val map = Map("zhangsan"->30, "lisi"->40)
map: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30)
​
// 获取zhagnsan的年龄
scala> map("zhangsan")
res10: Int = 30
​
// 获取所有的学生姓名
scala> map.keys
res13: Iterable[String] = Set(lisi, zhangsan)
​
// 获取所有的学生年龄
scala> map.values
res14: Iterable[Int] = HashMap(40, 30)
​
// 打印所有的学生姓名和年龄
scala> for((x,y) <- map) println(s"$x $y")
lisi 40
zhangsan 30
​
// 获取wangwu的年龄,如果wangwu不存在,则返回-1
scala> map.getOrElse("wangwu", -1)
res17: Int = -1
​
// 新增一个学生:wangwu, 35
scala> map + "wangwu"->35
res22: scala.collection.mutable.Map[String,Int] = Map(lisi -> 40, zhangsan -> 30, wangwu -> 35)
​
// 将lisi从可变映射中移除
scala> map - "lisi"
res23: scala.collection.mutable.Map[String,Int] = Map(zhangsan -> 30)

iterator迭代器

scala针对每一类集合都提供了一个迭代器(iterator)用来迭代访问集合
使用迭代器遍历集合

  • 使用iterator方法可以从集合获取一个迭代器
  • 迭代器的两个基本操作
    hasNext——查询容器中是否有下一个元素
    next——返回迭代器的下一个元素,如果没有,抛出NoSuchElementException
  • 每一个迭代器都是有状态的
    迭代完后保留在最后一个元素的位置
    再次使用则抛出NoSuchElementException
  • 可以使用while或者for来逐个返回元素

示例
1.定义一个列表,包含以下元素:1,2,3,4,5
2.使用while循环和迭代器,遍历打印该列表
参考代码

scala> val ite = a.iterator
ite: Iterator[Int] = non-empty iterator
​
scala> while(ite.hasNext) {
    println(ite.next)
     }

示例
1.定义一个列表,包含以下元素:1,2,3,4,5
2.使用for 表达式和迭代器,遍历打印该列表
参考代码

scala> val a = List(1,2,3,4,5)
a: List[Int] = List(1, 2, 3, 4, 5)
​
scala> for(i <- a) println(i)
发布了166 篇原创文章 · 获赞 29 · 访问量 3524

猜你喜欢

转载自blog.csdn.net/qq_44509920/article/details/105345857