我有两组字符串,我想得到组合的结果

I have two sets of string,I want get result of combination

我有两套

val set1 = { "A", "B", "C" }
val Set2 = { "all", "all", "all" }

//I want get this result :
result[0]={"A", "B", "C"} 
result[1]={"all", "B", "C"} 
result[2]={"a", "all", "C"}
... 
result[n]={"all", "all", "all"} 

如何实现这个功能。 非常感谢

我不知道这是不是最有效的方法。您首先要压缩这两个序列,因为它们的元素应该始终对齐。

val seq1 = List("A", "B", "C")
val seq2 = List("all", "all", "all")

val z = seq1 zip seq2 // -> List("A" -> "all", "B" -> "all", "C" -> "all")

然后你得想办法排列和assemble (flatMap)所有的可能性:

def build[A](in: List[(A, A)]): List[List[A]] = in match {
  case Nil => List(Nil)
  case (a, b) :: tail =>
     val tr = build(tail)
     tr.flatMap(xs => List(a :: xs, b :: xs))
}

build(z).foreach(println)

// ->
// List(A, B, C)
// List(all, B, C)
// List(A, all, C)
// List(all, all, C)
// List(A, B, all)
// List(all, B, all)
// List(A, all, all)
// List(all, all, all)