在列表中查找闭合集

时间:2016-08-11 07:56:20

标签: scala set subset superset

我有一个集合列表(Scala),并希望删除所有超集。 E.g。

List(Set(1,2,3), Set(1,2), Set(2,1), Set(5,6), Set(5))

我想获得以下列表

List(Set(1,2), Set(5))

我写了以下函数 - 不确定它有多强大:

 def findClosedSets (array: Array[Set[Int]]) : Array[Set[Int]] = {
  val arrayRight = array.distinct
  val arrayLeft =  arrayRight
  arrayLeft.filter(j => arrayRight.filter(i => i.subsetOf(j)).length==1)
} 

1 个答案:

答案 0 :(得分:0)

请考虑使用filter,如下所示

mySets.distinct.filter(s => mySets.forall(x => !x.subsetOf(s) || s == x))