在Java中,如何在单个数组中表示二维坐标系?

use*_*388 0 java arrays performance 2d coordinates

使用Java时,使用多维数组时似乎会出现大幅减速: -

int[] oneDArray=new int[3000*3000];
int[][] twoDArray=new int[3000][3000];

for(int x=0;x<oneDArray.length;x++){
   oneDArray[x]=x;
}



for(int x=0;x<twoDArray.length;x++){
    for(int y=0;y<twoDArray[0].length;y++){
        twoDArray[x][y]=x;
    }
}
Run Code Online (Sandbox Code Playgroud)

结果是:1d需要4 ms,而2d需要15ms,这在执行图形功能时是相当大的延迟.

如何用Java中的单个数组表示二维坐标?

Mar*_*aux 5

int w = 3000;
int h = 3000;

int[] array = new int[w * h];

/* Here is how to calculate the index for a specific (x, y) */
int index = y * w + x;

array[index] = 5;
Run Code Online (Sandbox Code Playgroud)