2
Mit Groovy möchte ich eine Liste auflisten (mit verschiedenen Größen) transponieren.Groovy Transponieren 2d Array verschiedene Größen
def mtrx = [
[1,2,3],
[4,5,6,7]
]
erwartete Ergebnis:
[[1,4],[2,5],[3,6],[null,7]]
oder
[[1,4],[2,5],[3,6],[7]]
Method .transpose() arbeitet für gleich große arbeitet gut, aber für die nicht gleich - einige Elemente werden abgeschnitten.
Mein Code ist:
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
Thank you very much :) Groovy - hört nie auf, mich zu überraschen - kurz, stark und arbeiten. Jetzt werde ich versuchen zu verstehen, wie es funktioniert (1) Holen Sie sich das Maximum von mtrx * .size(). Max() (2) iterieren von 0 bis max (3) kombinieren Schließung und Spread-Operator, um jedes Element in der Spalte zu erhalten. – Vanko