前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Scala 【 5 数组常见操作和 Map 】

Scala 【 5 数组常见操作和 Map 】

作者头像
Lokinli
发布2023-03-09 14:42:38
发布2023-03-09 14:42:38
34400
代码可运行
举报
文章被收录于专栏:以终为始以终为始
运行总次数:0
代码可运行
数组的常见操作
代码语言:javascript
代码运行次数:0
运行
复制
val a = Array(1,2,3,4,5)
//数组求和
val sum = a.sum
//获取数组的最大值
val max = a.max
//对数组进行排序
scala.until.Sorting.quickSort(a)
//获取数据的所有元素内容
a.mkString
//用符号分隔开
a.mkString(",")
//加上左右符号
a.mkString("<",",",">")
//toString 函数
a.toString
b.toString
使用 yield 和函数式变成转换数组
代码语言:javascript
代码运行次数:0
运行
复制
// 对 Array 进行转换
val a = Array(1,2,3,4,5)
val a1 = for(ele <- a) yield ele * ele

// 对 ArrayBuffer 进行转换
val b = ArrayBuffer[Int]()
b += (1,2,3,4,5)
val b1 = for(ele <- b) yield ele * ele

// 结合 if 守卫
val a2 = for(ele <- a if ele % 2 == 0) yield ele * ele

// 使用函数式编程转换数组
// _ 代表任意一个元素,这里就是对于 a 中的每一个元素如果 % 2 == 0 那么映射一下, 后面的 _ 代表判断后的也就是偶数,对于每一个偶数变成二倍。
a.filter(_ % 2 == 0).map(_ * 2)
// 第二种方式
a.filter{_ % 2 == 0}map{_ *2}
Map
代码语言:javascript
代码运行次数:0
运行
复制
//创建一个不可改变的 Map
val ages = Map("Li" -> 18,"Chy" -> 19)

//创建可变的 Map
val ages = scala.collection.mutable.Map("Li" -> 18, "Chy" -> 19)
ages("Li") = 19

// 另外方式
val ages = Map(("Li",19), ("Chy",18))

// 创建一个空的 HashMap
val ages = new scala.collection.mutable.HashMap[String,Int]
访问 Map 的元素
代码语言:javascript
代码运行次数:0
运行
复制
// 获取指定 key 对应的 value,如果 Key 不存在,会报错
val LiAge = ages("Li")

// 使用 contains 函数检查 key 是否存在
val LiAge = if(ages.contains("Li"))ages("Li")else 0

// getOrElse 函数
val LiAge = ages.getOrElse("Li",0)

要是不检查直接访问到不存在会报错。

修改 Map 的元素

代码语言:javascript
代码运行次数:0
运行
复制
// 更新 Map 元素 
ages("Li") = 20

// 增加多个元素
ages += ("Ni" -> 20 , "Yue" -> 21)

// 移出元素
ages -= "Ni"

// 更新不可改变的 Map,和下面那个道理其实是新申请了一个。对于 immutable 是不可改变的。
val ages1 = ages + ("Ni" -> 20 , "Yue" -> 21)
// 移动不可改变的 Map 的元素
val ages2 = ages - "Ni"

遍历 Map

代码语言:javascript
代码运行次数:0
运行
复制
// 遍历 map 的 entrySet
for((key,value) <- ages)println(key + " " + value)

// 遍历 map 的 key
for(key <- ages.keySet) println(key)

// 遍历 map 的 value
for(value <- ages.value) println(value)

// 生成新的 map ,反转 key 和 value
for((key,value) <- ages) yield(value,key) 
// 这里如果 key 重复了会发生?
// 会将最后面当做最后的值,前面的会覆盖
SortedMap 和 LinkedHashMap
代码语言:javascript
代码运行次数:0
运行
复制
// SortedMap 可以自动对 Map 的 key 的排序
val ages = scala.collection.immutable.SortedMap("Li" -> 12,"Cui" ->14, "Yue" -> 5)

// LinkedHashMap 可以记住插入 entry 的顺序
val ages = new scala.collection.mutable.LinkedHashMap[String,Int]
ages("Cui") = 14
ages("Li") = 12
ages("Yue") = 5
Map 的元素类型 - Tuple
代码语言:javascript
代码运行次数:0
运行
复制
val t = ("Li",12)
// t._1 = Li
// t.2 = 12
// 访问方式: t._1

// zip 操作
val names = Array("Li","Cui","Chy")
val ages = Array(12,15,5)
val nameAges = names.zip(ages)
for((name,age) <- nameAges) println(name + " " + age)
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-02-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 数组的常见操作
  • 使用 yield 和函数式变成转换数组
  • Map
  • 访问 Map 的元素
  • SortedMap 和 LinkedHashMap
  • Map 的元素类型 - Tuple
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档