大数据全系列 教程
1869个小节阅读:465k
目录
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
Map(映射)是一种可迭代的键值对(key/value)结构。所有的值都可以通过键来获取。Map 中的键都是唯一的,数据无序。
xxxxxxxxxx
package com.itbaizhan.chapter07
//不可变Map集合
object MapImmutable extends App {
//TODO 1.Java中Map的元素:JDK1.8-(包含1.8) Entry,JDK1.8+ Node
//TODO 2.Scala中没有导入而直接使用的Map为immutable.Map,不可变的。
val map1 = Map(1 -> "刘备", 2 -> "关羽", 3 -> "张飞")
//type Map[A, +B] = immutable.Map[A, B]
val map2: Map[Int, String] = Map[Int, String](6 -> "曹操", 7 -> "许褚", 8 -> "夏侯渊")
// 创建空的集合(了解)
val empty1: Map[Nothing, Nothing] = Map.empty
val empty2:Map[Int, String] = Map.empty[Int, String]
//TODO 3.添加键值对,不该原集合
val map3: Map[Int, String] = map1 + (4 -> "赵云")
println(map1 eq map3)//false
println("map1_3:"+map1)
println("map3:"+map3)
println("map3 string:"+map3.mkString(","))
//TODO 4.根据id删除键值对
val map4: Map[Int, String] = map3 - 4
println("map4 string:"+map4.mkString(","))
//TODO 5.合并两个集合,不改变原来参与合并的两个集合
val map5: Map[Int, String] = map1 ++ map2
println("map5 string:"+map5.mkString(","))
println("map1_5:"+map1)
println("map2_5:"+map2)
val map6: Map[Int, String] = map1 ++: map2
println("map6 string:"+map6.mkString(","))
println("map5 eq map6:"+(map5 eq map6))
//TODO 6.根据key获取value
println(map1.mkString(","))
val value1: Option[String] = map1.get(1)
val value2: Option[String] = map1.get(4)
println("value1="+value1)//存在key为1,对应value:Some(刘备)
println("value2="+value2)//不存在key为4,对应value都是None
//TODO 7.判断获取的value是否为空值
println(value1.isEmpty)//false 不是空
println(value2.isEmpty)//true 是空值 也就None
//TODO 8.从value对应的Option[A]中获取具体的value值
println(value1.get)
println(value2.getOrElse("不存在"))
//get方法无值时抛出NoSuchElementException: None.get
println(value2.get)
//推荐使用getOrElse(default)方法
}