Scala でリストをマップに変換する
この記事では、Scala でリストをマップに変換する方法を説明します。
Scala のリストとマップ
まず、リストとマップの簡単な定義を見てみましょう。
-
リストは、類似した種類の不変データのコレクションです。Scala でリンクリストを表すために使用されます。
構文:
list_name = List( element1, element2 , element3....)
例:
val fruits = List("Orange", "Apple" , "Mango" )
-
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つの方法があります。
zipWithIndex
メソッドを使用して、リストのキーとしてインデックスを追加します。- 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つのリストをマージする際に留意すべきいくつかのポイントは次のとおりです。
- キーとして使用しているリストには、固有の要素が含まれている必要があります。要素が一意である場合、後の要素が考慮されます。
- 両方のリストに同じ数の要素が含まれている必要があります。すべてのキーに値が存在する必要があります。そうでない場合は、リストの余分な要素は無視されます。
構文:
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
の 2つのリストがあります。toMap
メソッドを使用してリストをマップに変換し、リスト names
をキーとして使用し、リスト marks
を値として使用し、zip
を使用してそれらをマージし、結果を保存しましたマップ result
のマップ。