java - Java 如何保存对堆栈的引用?

标签 java data-structures stack

代码:

    Stack<Integer> firstStack = new Stack<Integer>();
    Stack<Integer> secondStack = firstStack;

    firstStack.push(1);
    firstStack.push(2);

    secondStack.pop();
    System.out.println(firstStack.pop());

我的问题是,如果firstStack引用了Stack中的最后一个项目,而secondStack也引用了这个项目,当我从第二个Stack中弹出时,firstStack应该继续引用(前一个)最后一个项目(即2)。为什么firstStack 的引用也改变为第一项? (第一项我的意思是:1)

最佳答案

firstStacksecondStack 都引用堆栈本身,而不是堆栈中的最后一个对象。

当你这样做时

Stack<Integer> secondStack = firstStack;

你的意思是:获取firstStack引用的堆栈对象,并让secondStack引用同一个对象。没有完成堆栈复制或类似操作。

因此,如果您从 secondStack 弹出,您也会从 firstStack 弹出。

关于java - Java 如何保存对堆栈的引用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13699412/

相关文章:

java - 编程语言运行时使用堆栈的主要原因是什么?

java - 具有概率百分比的随机 boolean 生成器

php - Mysql DB 结构(架构)建议

java - Kryonet:最好的数据结构?

Java:使用斐波那契堆实现 Dijkstra 算法

c - 如何在 C 中打印 void** 数据项?

c - 堆栈和引用传递

java - Struts 在页面加载时调用操作

Java 泛型 - 意外边界

java - 窗口大小调整时的中心面板