当前位置:网站首页>scala 不可变Map 、 可变Map 、Map转换为其他数据类型
scala 不可变Map 、 可变Map 、Map转换为其他数据类型
2022-07-27 02:56:00 【但行益事莫问前程】
前言
scala中Map是一种可迭代的键值对(key/value)结构。所有的值都可以通过键来获取。Map 中的键都是唯一的
1. 不可变Map
object T14 {
def main(args: Array[String]): Unit = {
//scala中map key不能重复 无序
//scala中键值对,可直接采用K->V方式
//key相同时,会进行覆盖
val map = Map("a" -> 1, "b" -> 2, "c" -> 3, "a" -> 5)
println(map)
// 添加数据
val map1 = map + ("d" -> 7)
println(map1)
// 删除数据
val map2 = map - "a"
println(map2)
// 修改数据
val map3 = map.updated("c", 9)
println(map3)
//合并map
val map4 = map ++ Map(1 -> "f", 3 -> "h")
println(map4)
// 遍历数据
map.foreach(println)
}
}

2. 可变Map
需引入import scala.collection.mutable
import scala.collection.mutable
object T15 {
def main(args: Array[String]): Unit = {
val map = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3)
println(map)
//key不存在,则插入;存在,则更新
map.put("a", 3)
println(map)
//可变Map +增加数据,产生新的map
val map1 = map + ("e" -> 5)
println(map1 eq map)
//可变Map +=增加数据,返回原来的map自身
val map2 = map += ("e" -> 5)
println(map2 eq map)
//修改数据的2种方式
map.update("c", 200)
println(map)
map("c") = 300
println(map)
//删除数据
map.remove("c")
// map - ("c")
// map -= ("c")
println(map)
//清空数据
map.clear()
println(map)
}
}

import scala.collection.mutable
object T16 {
def main(args: Array[String]): Unit = {
// java 若key存在,则取得value,若不存在,则返回null,hashmap可存储空键空值
//scala 可存储空值,不可以存储空键
val map = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3, "d" -> null)
//map根据key查询数据,会将查询结果进行包装
//返回结果的类型为Option[V]类型,有2个对象,Some(有值)、None(无值),以避免空指针异常
//对于key存在的场合,那么返回结果为Some
val value1 = map.get("a")
println(value1)
val value2 = map.get("d")
println(value2)
//对于key不存在的场合,那么返回结果为None
val value3 = map.get("e")
println(value3)
//获取key对应的具体值
println(map.get("a").get)
println(map.get("d").get)
//从None对象中get值,会发生异常
// println( map.get("e").get)
// 先判断是否为空或为空时设置默认值
println(map.get("e").isEmpty)
println(map.get("e").getOrElse(-1))
//更简介的方式
map.getOrElse("e",-1)
}
}

import scala.collection.mutable
object T17 {
def main(args: Array[String]): Unit = {
val map = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3, "d" -> null)
//mao 键 迭代器
// val keys = map.keys
// val iterator1 = keys.iterator
val iterator1 = map.keysIterator
while (iterator1.hasNext) {
println(map.get(iterator1.next()).get)
}
//mao 值 迭代器
// val values = map.values
// val iterator2 = values.iterator
val iterator2 = map.valuesIterator
while (iterator2.hasNext) {
println(iterator2.next())
}
}
}
3. Map转换为其他数据类型
object T18 {
def main(args: Array[String]): Unit = {
val map1 = mutable.Map("a" -> 1, "b" -> 2, "c" -> 3)
val set: Set[(String, Int)] = map1.toSet
val list: List[(String, Int)] = map1.toList
val array: Array[(String, Int)] = map1.toArray
println(set.mkString(","))
println(list.mkString(","))
println(array.mkString(","))
}
}

边栏推荐
- [semidrive source code analysis] [drive bringup] 41 - LCM drive backlight backlight control principle analysis
- 手动从0搭建ABP框架-ABP官方完整解决方案和手动搭建简化解决方案实践
- 288 page 180000 word intelligent campus overall design directory
- Subject 3: Jinan Zhangqiu line 5
- 【MySQL系列】MySQL索引事务
- What is animation effect? What is the transition effect?
- Golang sends email to the mail Library
- C # using sqlsugar updatable system to report invalid numbers, how to solve it? Ask for guidance!
- Leetcode- > 2-point search and clock in (3)
- 大咖说·图书分享|精益产品开发:原则、方法与实施
猜你喜欢

11. Zuul routing gateway

Stm32cubemx learning notes (41) -- eth interface +lwip protocol stack use (DHCP)

Share the current life -- a six week internship experience of a high school graduate in CCTV

356页14万字高端商业办公综合楼弱电智能化系统2022版

路由策略第一关

The fifth strong network cup national network security challenge Title reappearance (with title attachment, detailed explanation)

ApacheCon Asia 预热直播之孵化器主题全回顾

JVM原理简介

MySQL: understand the basic knowledge of MySQL and computer

线上一个隐匿 Bug 的复盘
随机推荐
线上一个隐匿 Bug 的复盘
Interview question 16.05 factorial mantissa
[untitled]
The 100th of the commercial anti counterfeiting series - boring systems and management processes can really be thrown into the trash can - by the way, analyze a dozen useless unity game self-test proj
ApacheCon Asia 预热直播之孵化器主题全回顾
一文读懂 | 数据中台如何支撑企业数字化经营
Bean Validation原理篇--07
Message queue learning -- Concepts
大咖说·图书分享|精益产品开发:原则、方法与实施
注释有点好玩哦
list模拟实现
Is it safe for tongdaxin to open an account
Lixia action | Yuanqi Digitalization: existing mode or open source innovation?
面试题 02.05. 链表求和
A. YES or YES?
JS array de duplication (including simple array de duplication and object array de duplication)
真正意义上的数字零售应当具有更加丰富的内涵和意义
C how to set different text watermarks for each page of word
Day 27 of leetcode
leetcode每日一题:数组的相对排序