在 Scala 中將列表轉換為 Map
Suraj P
2023年1月30日
本文將介紹如何在 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。
作者: Suraj P