2014-05-20 42 views
0

我對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是值(例如,Array(2,3,4)),我想要創建一個數組,其中的元素將是每個對應鍵的鍵值對的所有可能的組合,其中值將是數組[字符串]

的結果應該

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))) 
+0

這僅僅是一個「獲取所有獨特的組合」的變化,儘管在語言,我還沒有看到關於SO的實施。儘管如此,似乎仍然是重複的。 – BradleyDotNET

+0

我試了下面的代碼。但沒有任何更聰明的方式來做到這 VAL數組2 = array1.map(X => { VAL B = x._2 VAL A = x._1 VAL bsze = b.size 爲(I' - 0到(bsze-1))收益率(a(0),b(i)) }) – user3658637

+0

歡迎來到SO!嘗試突出顯示您的代碼(在輸入代碼之前使用4個空格),以便其他用戶可以更輕鬆地閱讀您的問題。 – gnometorule

回答

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

如果陣列處於價值array

for { 
    (key, values) <- array 
    value <- values 
} yield (key, value) 
相關問題