2016-11-25 3 views
1

Я хочу удалить столбец со значением NA.Как удалить столбец 2D-массива в java

пример, когда массив [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

Вы не можете изменить размер существующего массива структуры данных, если не уничтожить и восстановить его новое измерение (вы должны повторно инициализировать и повторно заполнить).

Вы можете попробовать что-то вроде этого.

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; 
} 
Смежные вопросы