2017-04-10 85 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)) 
相關問題