groovy转置2d阵列不同的大小

时间:2017-01-21 20:17:32

标签: arrays groovy transpose

对于groovy,我想在列表列表(不同大小)上进行转置。

def mtrx = [
   [1,2,3],
   [4,5,6,7]
]

预期结果:

[[1,4],[2,5],[3,6],[null,7]] 

[[1,4],[2,5],[3,6],[7]] 

方法.transpose()工作正常,工作正常,但不相等 - 某些元素被截断。

我的代码是:

def max = 0
def map = [:]
def mapFinal = [:]
def row = 0

def mtrx = [
   [1,2,3],
   [4,5,6,7]
]

mtrx.each{it->
    println it.size()
    if(max < it.size()){
        max = it.size()
    }
}
def transposed = mtrx.each{it->
   println it
   it.eachWithIndex{it1, index->
       println it1 + ' row ' + row  + ' column ' +index
       mapFinal[row+''+index] = it1
       map[index+''+row] = it1
   }
   row++
}
println map
println mapFinal

1 个答案:

答案 0 :(得分:4)

尝试

(0..<(mtrx*.size().max())).collect {
    mtrx*.getAt(it)
}