我有一个二维数组和堆栈:
int[][] data = new int[][];
Stack<int[][]> undoList = new Stack<int[][]>(10);
我想在每次更改后添加数据以将其保留在撤消列表中:
undoList.push(data);
// some changes to data array
undoList.push(data);
// some changes to data array
undoList.push(data);
那为什么所有的栈元素都有相同的值呢?
最佳答案
您正在对数组进行更改 - 但您没有将数组本身放入堆栈中...您正在将数组的引用放入堆栈中。您基本上多次推送相同的引用。如果您想要独立的值,则需要独立的数组。
将引用想象成有点像写在一张纸上的街道地址(其中这张纸通常是一个变量)。你现在拥有的是一本书,每一页上都有相同的街道地址。您可能在每一页上书写之间画了房子的前门,但这并不意味着我们可以看到所有这些不同的颜色 - 只涉及一栋房子。如果您想获得许多不同房屋的街道地址以及许多不同颜色的前门,您需要 build 许多不同的房屋......
关于java - 堆栈中的push(int[][])复制相同的值Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25572709/