How to get 2D subarray from 2D array in JAVA?

六眼飞鱼酱① 提交于 2019-12-10 13:56:14

问题


Suppose I have 2D array as follow:

int[][] temp={
              {1,2,3,4},
              {5,6,7,8},
              {9,10,11,12}};

and i want to get sub-array start from X direction 1 to 2 and Y direction 1 to 2 i.e.

{6,7}
{10,11}

can anyone give me solution for above problem.


回答1:


Here you are

    int[][] temp = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
    int[][] a = new int[temp.length][];
    for (int i = 0; i < temp.length; i++) {
        a[i] = Arrays.copyOfRange(temp[i], 1, 3);
    }
    System.out.println(Arrays.deepToString(a));

output

[[2, 3], [6, 7], [10, 11]]

answering your question in comment if we want to access only [[6, 7], [10, 11]]

    int[][] a = new int[2][];
    for (int i = 1, j = 0; i < 3; i++, j++) {
        a[j] = Arrays.copyOfRange(temp[i], 1, 3);
    }

output

[[6, 7], [10, 11]]



回答2:


As an example without using the Arrays class:

int[][] temp = { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } };
int[][] subArray = new int[temp.length][];
for (int i = 0; i < subArray.length; i++) {
    subArray[i] = new int[2];
    subArray[i][0] = temp[i][1];
    subArray[i][1] = temp[i][2];
}

You can then access any part of subArray that you want. This will access the values [[6, 7], [10, 11]]:

for (int x = 1; x < 3; x++) {
    System.out.println(subArray[x][0]);
    System.out.println(subArray[x][1]);
}

[Additional] To address the modified question:

If you want to create a smaller array you can play around with the start and end points of the loop, and the indices accessed within the loop, for example this will create the array you ask for:

int[][] subArray = new int[2][];
for (int i = 1; i < temp.length; i++) {
    subArray[i-1] = new int[2];
    subArray[i-1][0] = temp[i][1];
    subArray[i-1][1] = temp[i][2];
}



回答3:


You could instantiate a new array and loop through the appropriate indices of the original array to initialize the subarray.



来源:https://stackoverflow.com/questions/16362872/how-to-get-2d-subarray-from-2d-array-in-java

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!