Sha*_*kti 0 scala tuples filter scala-collections
我在Scala中有以下列表,我希望根据一个标准进行过滤,如果有任何元组具有重复的第一个值,请从下面的示例中我想要排除
List((a,1), (a,2))
Run Code Online (Sandbox Code Playgroud)
因为它有"a"作为重复.
你想过滤你的 result
用一个只留下未触及那些没有重复"键"的列表的函数
result filter noDuplicateKeys
Run Code Online (Sandbox Code Playgroud)
此过滤功能必须采用对列表 List[(A,B)]
并且仅当第一个元素对不存在于所有元素的其他位置时才返回true,并且可以实现为
def noDuplicateKeys[A, B](xs: List[(A, B)]) =
(xs groupBy (_._1)).values forall {_.size < 2}
Run Code Online (Sandbox Code Playgroud)
它将元素分组为一个Map
键,其键是A
s,其值是相应的列表B
与该键配对 s.
从此值开始,您只能接受大小不超过1的值