gpt4 book ai didi

java - 堆栈中的push(int[][])复制相同的值Java

转载 作者:行者123 更新时间:2023-12-02 05:30:40 25 4
gpt4 key购买 nike

我有一个二维数组和堆栈:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com