简体   繁体   中英

how to remove an element from 2d array in java

I want to remove an element after creating the below 2d array.And it should be the last element of the array.

public static void main(String[] args) {
        int i;
        int row = 2;
        int col = 2;
        String[][] queue = new String[row][col];
        Scanner scanner = new Scanner(System.in);
        String[][] queue = new String[row][col];
        Scanner scanner = new Scanner(System.in);
        for (row = 0; row < queue.length; row++) { // Loop through the rows in the 2D array.
            for (col = 0; col < queue[row].length; col++) { 
                System.out.println("Enter the name");{
                    queue[row][col] = scanner.next();
                }

                }
            }
        for (i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                System.out.print(queue[i][j] + " ");

The question is awkward.

  • You can't "remove" an element from a 2D static array - what you can do is empty that array element. This is as simple as queue[row - 1][col - 1] = "" .
  • If you want to be able to remove elements the way you describe, your best choice is use dynamic arrays, such as ArrayList.
  • Note though that Java supports 2D arrays with differing number of columns per row , so you can also create a new array, copy everything except the last column in the last row, and put it back in the original array.

You cannot remove a cell from an array. But you can effectively remove it by simply replacing the last row with a new copy of all but the last element.

queue[row-1] = Arrays.copyOf(queue[row-1], queue[row-1].length-1);

You might want to try creating the array like this. Then you won't need to remove or copy anything.

  • define the Array with the number of rows.
  • then assign the row array separately to the "2D" array. For a large number of rows, this could be done in a loop with an int[] array of dimensions for each row.
int rows = 2;
String[][] queue = new String[rows][];
queue[0] = new String[2];
queue[1] = new String[1];
Scanner scanner = new Scanner(System.in);
for (rows = 0; rows < queue.length; rows++) { // Loop through the rows in the 2D array.
    for (int col = 0; col < queue[rows].length; col++) { 
        System.out.println("Enter the name");{
            queue[rows][col] = scanner.next();
        }
    }
}
for (String[] row : queue) {
    System.out.println(Arrays.toString(row));
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM