在 Scala 中將列表轉換為 Map

Suraj P 2023年1月30日 2022年6月7日
  1. Scala 中的列表和 Map
  2. 在 Scala 中將列表轉換為 Map
在 Scala 中將列表轉換為 Map

本文將介紹如何在 Scala 中將 List 轉換為 Map。

Scala 中的列表和 Map

首先,讓我們看一下 List 和 Map 的簡要定義。

  1. 列表是類似型別的不可變資料的集合。它用於表示 Scala 中的連結串列。

    語法:

    list_name = List( element1, element2 , element3....)
    

    例子:

    val fruits = List("Orange", "Apple" , "Mango" )
    
  2. 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 包含一對值,即鍵值對,而列表僅包含單個值。

所以我們有兩種方法可以做到這一點:

  1. 使用 zipWithIndex 方法將索引作為鍵新增到列表中。
  2. 合併兩個列表,將一個作為鍵,另一個作為值。

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 建立鍵值對。

合併兩個列表時要記住的幾點是:

  1. 我們用作鍵的列表應該有唯一的元素。如果元素是唯一的,則將考慮後面的元素。
  2. 兩個列表應該有相同數量的元素;每個鍵都應該有一個值。如果不是這種情況,則列表中多餘的元素將被忽略。

語法:

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)

我們在上面的程式碼中有兩個列表,namesmarks。我們使用 toMap 方法將列表轉換為 Map,列表 names 用作鍵,列表 marks 用作值,我們使用 zip 合併它們並儲存結果 Map result 中的 Map。

Author: Suraj P
Suraj P avatar Suraj P avatar

A technophile and a Big Data developer by passion. Loves developing advance C++ and Java applications in free time works as SME at Chegg where I help students with there doubts and assignments in the field of Computer Science.

LinkedIn GitHub

相關文章 - Scala List