如何使用java获取2D数组中的特定列

时间:2016-12-01 09:22:26

标签: java arrays copy

当搜索值存在于数组中时,我选择该列并保存它们。 例如

1 2 3 4 5 6
A B C D E F
G H I J K L

我想创建一个包含x==1||x==4的列 下面的列将是我想要的结果

1 4
A D
G J

下面的代码是我的2D数组代码。我从csv文件和2D数组制作一维数组。当搜索值存在时,我选择列并保存它们。

    String str = readCSV(new File("D:/sample_folder/sample1.csv"));
    String[] strArr = parse(str); // It comes out in a row in an String array.
    int varNumber = 45;
    int rowNumber = strArr.length/varNumber;

    String[][] Array2D = new String[varNumber][rowNumber];

    for(int j=0;j<varNumber;j++)
    {
        for(int i=0; i<rowNumber;i++)   
            {
                String k = strArr[i*varNumber+j];
                        Array2D[j][i]= k;
        }
    }                       //make 2D array         

2 个答案:

答案 0 :(得分:1)

您可以通过2D数组行并选择所需的列。

for(int j=0;j<rowNumber;j++)
{
    // index starts from 0
    yourArray[j][0] = array2D[j][0];
    yourArray[j][1] = array2D[j][3];
}

或者更动态地写下:

int[] columnsYouWant = {0, 3};
for(int j=0;j<rowNumber;j++)
{
    for(int c=0;c<columnsYouWant.length;c++)
    {
       yourArray[j][c] = array2D[j][columnsYouWant[c]];
    }
}

如果你想使用if(x == 1 || x == 4):

for(int j=0;j<rowNumber;j++)
{
    column = 0;
    for(int c=0;c<columnNumber;c++)
    {
       x = c + 1;
       if (x == 1 || x == 4)
       yourArray[j][column++] = array2D[j][c];
    }
}

我可能会弄错。您似乎也可能想要以1或4开头的列。在这种情况下,如果您的第一行有数字而其余部分是按字母顺序排列的。您应该找到以1或4开头的列。

for(int j=0;j<colNumber;j++)
{
   x = array2d[0][j];
   if ( x == 1 || x == 4 ) {
       // add you j to an array
   }
}

如果你知道你想要哪些列,你可以在我的答案中使用第二段代码来创建你想要的列的2D数组。

答案 1 :(得分:0)

尝试此模拟,我在2DArray中填充此内容:

<FIRInstanceID/WARNING> Failed to fetch default token Error Domain=com.firebase.iid Code=501 "(null)" UserInfo={msg=Missing device credentials. Retry later.}
<FIRInstanceID/WARNING> Failed to retrieve the default GCM token after 5 retries

之后,我制作了一个代码,仅打印1 2 3 4 5 6 A B C D E F G H I J K L 1列。

4

代码的输出是:

public static void main(String[] args) {
    String[][] twoDArray = populateArray();
    int x = 0;
    for (int i = 0; i < twoDArray.length; i++) {
        for (int j = 0; j < twoDArray[0].length; j++) {
            x = j + 1;
            if(x == 1 || x == 4) {
                System.out.print(twoDArray[i][j]);
            }
        }
        System.out.println();
    }

}

public static String[][] populateArray() {
    String[][] twoDArray = new String[3][6];
    for (int i = 0; i < twoDArray[0].length; i++) {
        twoDArray[0][i] = (i + 1) + "";
    }
    char alphaChar = 'A';
    for (int i = 1; i < twoDArray.length; i++) {
        for (int j = 0; j < twoDArray[0].length; j++) {
            twoDArray[i][j] = String.valueOf(alphaChar);
            alphaChar++;
        }
    }
    return twoDArray;
}

如果您对我使用的14 AD GJ 发表评论,它将按以下方式打印:

if(x == 1 || x == 4) {