如何在String和Array之间生成所有可能的键值组合[String]

时间:2014-05-20 23:31:20

标签: arrays scala combinations

我对Scala很新,因此这可能是一个非常基本的问题。

我有一个类型为Array [(String,Array [String])]的变量“myArray”。该数组的值是

Array((1,Array(2, 3, 4)), (2,Array(1, 3, 4, 6, 7)), (3,Array(1, 2, 4, 5))). 

如果我们认为每个元组的第一个元素是一个键(例如,在元组中(1,数组(2,3,4)),1是键),rest是值(例如,数组(2) ,3,4)),我想创建一个数组,其元素将是每个对应键的键值对的所有可能组合,其中值将是数组的每个元素[String]

结果应该是

Array((1,Array(1,2)), (1,Array(1,3)), (1,Array(1,4)), (2,Array(2,1)), 
      (2,Array(2,3)), (2,Array(2,4)), ...., (3,Array(3,4)), (3,Array(3,5)))

2 个答案:

答案 0 :(得分:2)

@wingedsubmariner已关闭,但为了匹配@ user3658637的奇怪要求,映射是:

for {
  (key, values) <- array
  value <- values
  yield (key,Array(key, value))     //> res1: Array[(Int, Array[Int])] = Array((1,Array(1, 2)), (1,Array(1, 3)), (1,
                                    //| Array(1, 4)), (2,Array(2, 1)), (2,Array(2, 3)), (2,Array(2, 4)), (2,Array(2,
                                    //|  6)), (2,Array(2, 7)), (3,Array(3, 1)), (3,Array(3, 2)), (3,Array(3, 4)), (3
                                    //| ,Array(3, 5)))

答案 1 :(得分:1)

如果您的数组的值为array

for {
  (key, values) <- array
  value <- values
} yield (key, value)