📜  Scala 产品映射值(1)

📅  最后修改于: 2023-12-03 15:19:58.226000             🧑  作者: Mango

Scala 产品映射值

在Scala中,映射值是一种重要的数据类型,它允许将键映射到值。Scala标准库提供了两种映射值类型:不可变的Map和可变的mutable.Map。不可变的Map是线程安全的,一旦创建就不能更改。可变的Map则是线程不安全的,可以在运行时添加、修改和删除元素。

创建映射值
不可变的Map

不可变的Map可以通过Map伴生对象的apply方法或Map构造函数进行创建。

// 使用apply方法创建Map
val map1 = Map("key1" -> "value1", "key2" -> "value2")
// 使用Map构造函数创建Map
val map2 = Map(("key1", "value1"), ("key2", "value2"))
可变的Map

可变的Map需要使用mutable.Map类创建。可以通过mutable.Map伴生对象的apply方法或new关键字创建mutable.Map

// 使用apply方法创建mutable.Map
val mutableMap1 = mutable.Map("key1" -> "value1", "key2" -> "value2")
// 使用new关键字创建mutable.Map
val mutableMap2 = new mutable.HashMap[String, String]()
操作映射值
获取值

可以使用get方法或apply方法获取映射值中的值。get方法返回一个Option对象,如果键不存在则返回None,否则返回Some包装器对象。

val map = Map("key1" -> "value1", "key2" -> "value2")
val mutableMap = mutable.Map("key1" -> "value1", "key2" -> "value2")

// 使用get方法获取值
val value1 = map.get("key1")  // Some("value1")
val value3 = map.get("key3")  // None

// 使用apply方法获取值
val value2 = mutableMap("key2")
添加值

通过+操作符或+=方法可以向映射值中添加一个元素。操作返回一个新的映射值对象。

val map = Map("key1" -> "value1", "key2" -> "value2")
val mutableMap = mutable.Map("key1" -> "value1", "key2" -> "value2")

// 使用+操作符添加元素
val newMap1 = map + ("key3" -> "value3")
val newMutableMap1 = mutableMap + ("key3" -> "value3")

// 使用+=方法添加元素
mutableMap += ("key3" -> "value3")
修改值

通过+操作符或+=方法也可以修改映射值中的元素。如果键已经存在,则会替换掉原有的值。

val map = Map("key1" -> "value1", "key2" -> "value2")
val mutableMap = mutable.Map("key1" -> "value1", "key2" -> "value2")

// 使用+操作符修改元素
val newMap1 = map + ("key2" -> "new value")
val newMutableMap1 = mutableMap + ("key2" -> "new value")

// 使用+=方法修改元素
mutableMap += ("key2" -> "new value")
删除值

通过-操作符或`-=``方法可以从映射值中删除一个元素。

val map = Map("key1" -> "value1", "key2" -> "value2")
val mutableMap = mutable.Map("key1" -> "value1", "key2" -> "value2")

// 使用-操作符删除元素
val newMap1 = map - "key2"
val newMutableMap1 = mutableMap - "key2"

// 使用-=方法删除元素
mutableMap -= "key2"
遍历映射值

可以使用foreach方法遍历映射值中的所有键值对。foreach方法接受一个函数作为参数,这个函数接受一个键值对元组作为参数。

val map = Map("key1" -> "value1", "key2" -> "value2")
val mutableMap = mutable.Map("key1" -> "value1", "key2" -> "value2")

// 遍历不可变的Map
map.foreach { case (key, value) =>
  println(s"$key -> $value")
}

// 遍历可变的Map
mutableMap.foreach { case (key, value) =>
  println(s"$key -> $value")
}
参考文献