ros*_*osy 3 collections combinations scala scala-collections
我想组合字符串中的值.例如,
Let A = a,b,c,d
Run Code Online (Sandbox Code Playgroud)
我希望组合为,
AComb = a,b,c,d,ab,ac,ad,bc,bd,cd,abc,abd,bcd,acd
Run Code Online (Sandbox Code Playgroud)
我假设A
是一个Set
scala> val A =Set("a","b","c","d")
A: scala.collection.immutable.Set[String] = Set(a, b, c, d)
scala> val AComb=A.toSet[String].subsets.map(_.mkString).toVector
AComb: Vector[String] = Vector("", a, b, c, d, ab, ac, ad, bc, bd, cd, abc, abd, acd, bcd, abcd)
Run Code Online (Sandbox Code Playgroud)
我认为你不需要第一个元素,所以你可以尝试
scala> val AComb=A.toSet[String].subsets.map(_.mkString).toVector.tail
AComb: scala.collection.immutable.Vector[String] = Vector(a, b, c, d, ab, ac, ad, bc, bd, cd, abc, abd, acd, bcd, abcd)
Run Code Online (Sandbox Code Playgroud)
删除第一个和最后一个元素
scala> val AComb=A.toSet[String].subsets.map(_.mkString).toVector.init.tail
AComb: scala.collection.immutable.Vector[String] = Vector(a, b, c, d, ab, ac, ad, bc, bd, cd, abc, abd, acd, bcd)
Run Code Online (Sandbox Code Playgroud)
根据评论更新
scala> val xc1=Set("sunny","hot","high","FALSE","no")
xc1: scala.collection.immutable.Set[String] = Set(sunny, FALSE, hot, no, high)
scala> val AComb=xc1.toSet[String].subsets.map(_.mkString(" ")).toVector.tail;
AComb: scala.collection.immutable.Vector[String] = Vector(sunny, FALSE, hot, no, high, sunny FALSE, sunny hot, sunny no, sunny high, FALSE hot, FALSE no, FALSE high, hot no, hot high, no high, sunny FALSE hot, sunny FALSE no, sunny FALSE high, sunny hot no, sunny hot high, sunny no high, FALSE hot no, FALSE hot high, FALSE no high, hot no high, sunny FALSE hot no, sunny FALSE hot high, sunny FALSE no high, sunny hot no high, FALSE hot no high)
Run Code Online (Sandbox Code Playgroud)