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 楼答案
您正在重写数组,将同一个实例推送两次。每次创建一个新的