有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java堆栈返回已删除的项

嗨,请帮我弄清楚,怎么了? 为什么当我从堆栈中执行第二次弹出时,它会返回已删除的前一次弹出

public class R {

public static void main(String[] args) {
    Stack<int[][] > stack = new Stack<int[][] >();
    int[][] arr = new int[4][4];
    System.out.println("added");
    for(int i = 0; i < 4; i ++){
        for(int j = 0; j < 4;j++){
            arr[i][j] = i + j;
            System.out.print(i + j);
        }
        System.out.println();
    }
    stack.push(arr);
    System.out.println("added");
    for(int i = 0; i < 4; i ++){
        for(int j = 0; j < 4;j++){
            arr[i][j] = i * j;
            System.out.print(i * j);
        }
        System.out.println();
    }
    stack.push(arr);
    System.out.println(stack.size());

    arr = stack.pop();
    System.out.println("removed");
    for(int i = 0; i < 4; i ++){
        for(int j = 0; j < 4;j++){
            System.out.print(arr[i][j]);
        }
        System.out.println();
    }
    System.out.println(stack.size());
    int[][] arr2 = stack.pop();
    System.out.println("removed");
    for(int i = 0; i < 4; i ++){
        for(int j = 0; j < 4;j++){
            System.out.print(arr2[i][j]);
        }
        System.out.println();
    }
    System.out.println(stack.size());
    }
}

第一个数组是: 0123 1234 2345 3456

第二: 0000 0123 0246 0369

然后删除: 0000 0123 0246 0369

除此之外: 0123 1234 2345 3456


共 (1) 个答案

  1. # 1 楼答案

    您正在重写数组,将同一个实例推送两次。每次创建一个新的