2017-01-21 1 views
2

groovy로 목록의 목록을 다른 크기로 바꾸고 싶습니다.groovy 2 차원 배열을 다른 크기로 바꾸기

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 

답변

4

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

매우 감사하십시오 : 그루비 - 짧은, 그루비와 작업 - 나를 놀라게 중단하지 마십시오. 이제는 어떻게 작동하는지 이해하려고 노력할 것입니다. (1) mtrx * .size()에 의해 최대 값을 얻으십시오. max() (2) 0에서 max까지 반복 (3) 클로저와 스프레드 연산자를 결합하여 컬럼의 모든 요소를 ​​가져옵니다. – Vanko

관련 문제