在Groovy中动态创建2D数组

时间:2018-11-16 06:51:58

标签: arrays dynamic groovy 2d

我已经遍历了有关Groovy 2D数组的所有关于stackoverflow的问题,答案似乎还不够。我对groovy还是很陌生,因此,衷心感谢您在这方面的投入。

我正在尝试通过以下方式创建2D阵列。

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 :(得分:0)

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[]