2017-04-10 8 views
0

私はマップのリストを持っています。ScalaのList of Mapからすべての値を取得するには?

List(Map(term_id -> 20898477-2374-4d4c-9af0-8ed9c9829c94), 
Map(term_id -> 6d949993-1593-4491-beae-eb9bf8abcf27), 
Map(term_id -> 1123c413-3ffd-45ed-8215-dd1bccb3a48f)) 

すべての値を取得し、上記のマップのリストにterm_idが存在するかどうかを確認します。

これは、リストを繰り返し、各マップの値をチェックすることで実行できます。しかし、私はもっと効率的でライナーが1つ必要です。私はJavaまたはScalaのどちらの方法でも問題ありません。

この質問は素朴かもしれませんが、進め方については分かりません。私はJava/Scalaの新機能です。

予想される出力:あなたは、コードの下に使用することができます

List(20898477-2374-4d4c-9af0-8ed9c9829c94, 6d949993-1593-4491-beae-eb9bf8abcf27, 
123c413-3ffd-45ed-8215-dd1bccb3a48f) 
+0

この同じデータ構造を使用すると、各要素の反復処理が実際に最も効率的です。 – stinepike

+0

@StinePike、マップのリストを解凍し、反復せずに値として '要素'を含むマップを見つけることは可能ですか? –

+0

あなたのマップには何がありますか?それぞれ1つのエントリしかないようです。 – racraman

答えて

5

私はflatMapはあなたが欲しいものだと思います。

val maplist=List(Map("term_id" -> "20898477-2374-4d4c-9af0-8ed9c9829c94"), Map("term_id" -> "6d949993-1593-4491-beae-eb9bf8abcf27"), Map("term_id" -> "1123c413-3ffd-45ed-8215-dd1bccb3a48f")) 

maplist.flatMap(_.values) 
//res0: List[String] = List(20898477-2374-4d4c-9af0-8ed9c9829c94, 6d949993-1593-4491-beae-eb9bf8abcf27, 1123c413-3ffd-45ed-8215-dd1bccb3a48f) 

maplist.flatMap(_.keys) 
//res1: List[String] = List(term_id, term_id, term_id) 
1

は、値のリストを取得するには

val maplist=List(Map("term_id" -> "20898477-2374-4d4c-9af0-8ed9c9829c94"), Map("term_id" -> "6d949993-1593-4491-beae-eb9bf8abcf27"), Map("term_id" -> "1123c413-3ffd-45ed-8215-dd1bccb3a48f")) 

    maplist.map(x=>x.get("term_id") 

出力:

List[Option[String]] = List(Some(20898477-2374-4d4c-9af0-8ed9c9829c94), Some(6d949993-1593-4491-beae-eb9bf8abcf27), Some(1123c413-3ffd-45ed-8215-dd1bccb3a48f)) 
関連する問題