Scala でリストをマップに変換する

Suraj P 2023年1月30日
  1. Scala のリストとマップ
  2. Scala でリストをマップに変換する
Scala でリストをマップに変換する

この記事では、Scala でリストをマップに変換する方法を説明します。

Scala のリストとマップ

まず、リストとマップの簡単な定義を見てみましょう。

  1. リストは、類似した種類の不変データのコレクションです。Scala でリンクリストを表すために使用されます。

    構文:

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

    例:

    val fruits = List("Orange", "Apple" , "Mango" )
    
  2. Scala のマップは、キーと値のペアのコレクションです。キーは常に一意ですが、値は繰り返すことができます。それらはデータ検索に非常に役立ちます。

    Scala のマップは不変または可変ですが、デフォルトでは不変です。

    構文:

    map_name = Map(key1->value1, key2->value2, key3->value3 ....)
    

    例:

    val marks = Map("tony" -> 30, "bruce" -> 20,"Iron Man" -> 50)
    

Scala でリストをマップに変換する

Scala でリストをマップに変換するには、toMap メソッドを使用します。マップには値のペア、つまりキーと値のペアが含まれているのに対し、リストには単一の値のみが含まれていることを覚えておく必要があります。

したがって、これを行うには 2つの方法があります。

  1. zipWithIndex メソッドを使用して、リストのキーとしてインデックスを追加します。
  2. 1つをキー、もう 1つを値と見なして、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)

上記のコードでは、さまざまなフルーツの名前を含むフルーツのリストを作成しました。リストをマップに変換するための toMap メソッドがあります。

リストには単一の値のみが含まれます。zipWithIndex メソッドを使用して、0 からすべてのリスト要素にインデックス値をキーとして追加しました。

Scala でリストをマップに変換するために、2つのリストをマージする

2つのリストをマージしてマップを作成できます。ここでは、一方のリストをキーとして使用し、もう一方を最後の値として使用して、マップのキーと値のペアを作成します。

2つのリストをマージする際に留意すべきいくつかのポイントは次のとおりです。

  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 の 2つのリストがあります。toMap メソッドを使用してリストをマップに変換し、リスト names をキーとして使用し、リスト marks を値として使用し、zip を使用してそれらをマージし、結果を保存しましたマップ result のマップ。

著者: 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