У меня есть 2d массив, скажем так:как уменьшить 2d массив
2 0 8 9
3 0 -1 20
13 12 17 18
1 2 3 4
2 0 7 9
Как создать массив уменьшенный на скажем 2-ю строку и третий столбец?
2 0 9
13 12 18
1 2 4
2 0 9
У меня есть 2d массив, скажем так:как уменьшить 2d массив
2 0 8 9
3 0 -1 20
13 12 17 18
1 2 3 4
2 0 7 9
Как создать массив уменьшенный на скажем 2-ю строку и третий столбец?
2 0 9
13 12 18
1 2 4
2 0 9
Удаление строк и столбцов в массивах являются дорогостоящими операциями, потому что вы должны переместить вещи, но эти методы делать то, что вы хотите:
static int[][] removeRow(int[][] data, int r) {
int[][] ret = new int[data.length - 1][];
System.arraycopy(data, 0, ret, 0, r);
System.arraycopy(data, r+1, ret, r, data.length - r - 1);
return ret;
}
static int[][] removeColumn(int[][] data, int c) {
for (int r = 0; r < data.length; r++) {
int[] row = new int[data[r].length - 1];
System.arraycopy(data[r], 0, row, 0, c);
System.arraycopy(data[r], c+1, row, c, data[r].length - c - 1);
data[r] = row;
}
return data;
}
Вы можете исследовать другие структуры данных, которые допускают более дешевую абсорбцию, хотя, т. е. двусвязные списки. См., Например, Dancing Links.
+1 для предложения другой структуры данных. – Cam
public class TestMe {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int array[][] = {{2,0, 8, 9,},
{3, 0, -1, 20},
{13, 12, 17, 18},
{1, 2, 3, 4,},
{2, 0, 7, 9}};
for(int i=0; i<array.length;i++){
if(i == 1){
continue;
}
for(int j=0; j<array[i].length;j++){
if(j==2){
continue;
}
System.out.print(array[i][j]+" ");
}
System.out.println("");
}
}
}
К сожалению, для этого нет встроенного устройства. Вы должны искать библиотеку манипуляции матрицей. – Thilo
Вы ищете библиотеку или функцию, которую вы могли бы написать, чтобы выполнить действие. – dagoof
Функция, которая позволит мне не печатать, а создавать этот массив. – owca