2016-12-06 54 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