列表是相同类型的不可变数据的集合。List表示Scala中的LinkedList。
创建列表:
在Scala中创建列表的语法,
val list_name = List (element1, elemenet2, ...)
列表示例:
// 整数列表 List(3, 65, 1, 90, 54, 100) // 字符串列表 List("scala", "C++", "JavaScript", "Python")
Map是以键值对形式存储的元素的集合。它们具有用于检索与键相关的值的唯一键。
在Scala中创建映射:
val map_name = Map(key1 -> value1, key2 -> value2, ....)
映射示例:
Map(int -> string): Map(1 -> "Scala" , 2 -> "JavaScript", 3-> "Python")
在Scala中,您可以使用toMap方法将列表转换为Scala中的映射。
映射包含一组值,即key-> value,但列表包含单个值。因此,在将列表转换为映射时,我们有两种方法:
将索引添加到列表。
合并两个列表,一个用作键,另一个用作值。
我们将添加索引作为列表元素的键值。为此,我们将使用zipWithIndex方法。
语法:
List_name .zipWithIndex.map{ case(v,i) => (i,)}.toMap
程序将列表转换为映射
object MyObject { def main(args: Array[String]) { val progLang = List("C++", "JavaScript" , "Scala" , "Python") val map = progLang.zipWithIndex.map{ case (v,i) => (i,v) }.toMap println("map的值: "+ map) } }
输出:
map的值: Map(0 -> C++, 1 -> JavaScript, 2 -> Scala, 3 -> Python)
说明:
在上面的代码中,我们创建了一个列表progLang,其中包含编程语言的名称。为了将此列表转换为映射,我们使用了toMap方法。由于列表具有单个值,并且映射需要值,因此我们使用zipWithIndex方法将索引用作键,该方法将索引值从0开始添加到映射中列表的每个元素。使用这些功能,我们创建了带有名称映射的Map,并使用println方法打印了其内容。
我们可以通过使用两个列表并将其合并以创建映射来创建映射。为了进行创建,我们将使用列表之一作为键,另一些作为值添加到映射的键值对。
用作映射中键的列表应具有唯一元素,并且两个列表应具有相同数量的元素。
语法:
map_name = (list1_name zip list2_name).toMap
程序将列表转换为映射
object MyObject { def main(args: Array[String]) { val myBikes = List("ThunderBird 350" , "YRF R3" , "S1000RR") val topSpeed = List(132 , 167 , 300) val bikeSpeed = (myBikes zip topSpeed).toMap println("map的值: "+ bikeSpeed) } }
输出:
map的值: Map(ThunderBird 350 -> 132, YRF R3 -> 167, S1000RR -> 300)
说明:
在上面的代码中,我们创建了两个列表,myBike用于存储自行车的名称,以及topSpeed用于存储这些自行车的最高速度。现在,我们已使用toMap方法将列表转换为映射。要将一个列表用作键,将另一个列表用作值,我们使用了zip。然后,我们将映射存储到bikeSpeed变量中,并使用println打印其内容。
要记住的要点:
虽然转换两个列表的元素时应相同,否则将保留列表中多余的元素(将不考虑)。
如果要用作键的列表元素不是唯一的,则后一个元素将在映射中考虑,并且第一个元素的匹配值将被丢弃。