在 Scala 中将列表转换为 Map
Suraj P
2023年1月30日
2022年6月7日
本文将介绍如何在 Scala 中将 List 转换为 Map。
Scala 中的列表和 Map
首先,让我们看一下 List 和 Map 的简要定义。
-
列表是类似类型的不可变数据的集合。它用于表示 Scala 中的链表。
语法:
list_name = List( element1, element2 , element3....)
例子:
val fruits = List("Orange", "Apple" , "Mango" )
-
Scala 中的 Map 是键值对的集合。键总是唯一的,而值可以重复;它们对于数据检索非常有用。
Scala 中的 Map 可以是不可变的,也可以是可变的,但默认情况下,它们是不可变的。
语法:
map_name = Map(key1->value1, key2->value2, key3->value3 ....)
例子:
val marks = Map("tony" -> 30, "bruce" -> 20,"Iron Man" -> 50)
在 Scala 中将列表转换为 Map
为了在 Scala 中将列表转换为 Map,我们使用 toMap
方法。我们必须记住,Map 包含一对值,即键值对,而列表仅包含单个值。
所以我们有两种方法可以做到这一点:
- 使用
zipWithIndex
方法将索引作为键添加到列表中。 - 合并两个列表,将一个作为键,另一个作为值。
Scala 中的 zipWithIndex
方法
我们将使用 zipWithIndex
方法和 Scala 的 toMap
方法将键添加到列表中。
语法:
map_name = list_name.zipWithIndex.map{ case(k,v) => (v,)}.toMap
示例代码:
object myClass {
def main(args: Array[String]) {
val fruits = List("Apple", "Orange" , "Watermelon" , "Mango")
val map = fruits.zipWithIndex.map{ case (k,v) => (v,k) }.toMap
println("The values of map : "+ map)
}
}
输出:
The values of map : Map(0 -> Apple, 1 -> Orange, 2 -> Watermelon, 3 -> Mango)
在上面的代码中,我们创建了一个包含不同水果名称的 fruits
列表。我们有 toMap
方法将列表转换为 Map。
该列表仅包含单个值;我们使用 zipWithIndex
方法将索引值添加为键,从 0 开始到每个列表元素。
在 Scala 中合并两个列表以将列表转换为 Map
我们可以合并两个列表来创建 Map;在这里,我们使用一个列表作为键,另一个作为最后的值,为 Map 创建键值对。
合并两个列表时要记住的几点是:
- 我们用作键的列表应该有唯一的元素。如果元素是唯一的,则将考虑后面的元素。
- 两个列表应该有相同数量的元素;每个键都应该有一个值。如果不是这种情况,则列表中多余的元素将被忽略。
语法:
val map_name = (list_1 zip list_2).toMap
示例代码:
object myClass {
def main(args: Array[String]) {
val names = List("Tony", "Bruce" , "Strange" , "Iron Man")
val marks = List(33 ,56 ,89 ,99)
val result = (names zip marks).toMap
println("The values of map : "+ result)
}
}
输出:
The values of map : Map(Tony -> 33, Bruce -> 56, Strange -> 89, Iron Man -> 99)
我们在上面的代码中有两个列表,names
和 marks
。我们使用 toMap
方法将列表转换为 Map,列表 names
用作键,列表 marks
用作值,我们使用 zip
合并它们并存储结果 Map result
中的 Map。
Author: Suraj P