Динамическое создание 2D-массива в Groovy - PullRequest
0 голосов
/ 16 ноября 2018

Я уже прошел все вопросы по stackoverflow, касающимся двумерных массивов Groovy, и ответов, похоже, недостаточно. Я также довольно новичок в Groovy, поэтому я искренне признателен за ваш вклад в этом отношении.

Я пытаюсь создать двумерный массив следующим образом.

def extractedArray = []
// fullArray is a 2D array of size[11987][4]

def x = 0
for (x; x<fullArray.length; x++){
    if (x==0){

        extractedArray[] = []

        extractedArray[0][0]=fullArray[0][0]
        extractedArray[0][1]=fullArray[0][2]
    }
    else{

        for(def y=0; y<extractedArray.length; y++){
            //other functions
        }
    }
}

Но это, кажется, дает мне следующую ошибку.

Caught: java.lang.NullPointerException: Cannot invoke method putAt() on null object
java.lang.NullPointerException: Cannot invoke method putAt() on null object
    at computeMPR.main(computeMPR.groovy:37)

1 Ответ

0 голосов
/ 16 ноября 2018
def extractedArray = []

это не массив, а инициализация списка

, поэтому вы можете изменить код:

//extractedArray[0][0]=fullArray[0][0]
//extractedArray[0][1]=fullArray[0][2]
extractedArray << [fullArray[0][0], fullArray[0][2]]

или, если вы предпочитаете массивы, вы можете сделать что-то вроде:

Object[] extractedArray = [fullArray.size()]

extractedArray[0] = [
                        fullArray[0][0],
                        fullArray[0][2]
                    ] as Object[]
...