2016-12-06 77 views
0

的名單中篩選出一個共同的關鍵值映射我有地圖的列表:斯卡拉:如何從地圖

val input = List(Map("id" -> "abc", "val" -> 100), 
        Map("id" -> "abc", "val" -> 109), 
        Map("id" -> "bca", "val" -> 115), 
        Map("id" -> "acb", "val" -> 100), 
        Map("id" -> "cba", "val" -> 105), 
        Map("id" -> "cba", "val" -> 110), 
        Map("id" -> "cba", "val" -> 116)) 

從中我需要過濾掉所有共享一個共同的價值地圖鍵「ID」。換句話說,我只需要保存key id值唯一的地圖。

val output = List(Map("id" -> "bca", "val" -> 115), 
        Map("id" -> "acb", "val" -> 100)) 

回答

8

使用分組

input.groupBy(x => x("id")).filter(y => y._2.size == 1).map(_._2)

+1

非常感謝,有flatMap而不是地圖,它提供了正是我想要的。 – david