2017-04-10 80 views
0

我有地图列表。如何从Scala列表中获取所有值?

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是否已经存在于上面的Map列表中。

这可以通过迭代列表并检查每个地图的值来完成。但我想要更有效率的内容和一个班轮。我对Java或Scala方法都没问题。

这个问题可能是天真的,但我没有得到如何进行。我是Java/Scala的新手。

预期输出:

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

通过遍历每个元素的确是最有效的方法,如果这个相同的数据结构使用 – stinepike

+0

@StinePike,才有可能解开地图的列表,找到其中包含一个'element'如不反复任何有价值的地图? –

+0

您的地图中有什么?它看起来像每个只包含一个单一的条目。 – 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)) 
相关问题