在 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