如何在java中删除2D数组列

时间:2016-11-25 07:00:42

标签: java arrays

我想删除具有NA值的列。

例如,当array [i,j]有NA时,我想删除第i列。 find2DIndex找到NA值,removeNA删除第i列。

尽管努力去除NA值,但数组中仍然存在NA值。

private static Point find2DIndex(Object[][] array, Object search) {

    if (search == null || array == null) return null;

    for (int rowIndex = 0; rowIndex < array.length; rowIndex++ ) {
       Object[] row = array[rowIndex];
       if (row != null) {
          for (int columnIndex = 0; columnIndex < row.length; columnIndex++) {
             if (search.equals(row[columnIndex])) {
                 return new Point(rowIndex, columnIndex);
             }
          }
       }
    }
    return null; 
 }


public static String[][] removeNA(String[][] str){

    Point index = new Point();

    if((index= find2DIndex(str,"NA"))!=null){
    for(int j=0;j<49;j++){
        for(int i=index.y;i<str.length/49;i++){
                str[j][i]= str[j][i+1];
            }//j열 모두 지우기
        }
    }
                return str;
}


public static void main(String[] args) throws IOException {
    String str = readCSV(new File("D:/sample.csv"));

    String[] strArr = parse(str); // String 배열에 차곡차곡 담겨서 나온다.

    String[][] Array2D = new String[27][45];

    for(int i=0; i<45;i++){
        for(int j=0;j<27;j++){
            String k = strArr[i*27+j];
             Array2D[j][i]= k;

                }
            }

1 个答案:

答案 0 :(得分:1)

您不能更改现有Array数据结构的维度,除非您使用新维度销毁并重建它(您必须重新初始化并重新填充)。

你可以尝试这样的事情。

public int[][] deleteColumn(int[][] args,int col)
{
    int[][] nargs;
    if(args != null && args.length > 0 && args[0].length > col)
    {
        nargs = new int[args.length][args[0].length-1];
        for(int i=0; i<args.length; i++)
        { 
            int newColIdx = 0;
            for(int j=0; j<args[i].length; j++)
            {
                if(j != col)
                {
                    nargs[i][newColIdx] = args[i][j];
                    newColIdx++;
                }               
            }
        }
    }
    return nargs; 
}