【问题标题】:Queue passing by reference通过引用传递队列
【发布时间】:2020-07-03 09:21:30
【问题描述】:

我这里有使用两个队列 q1 和 q2 实现堆栈的 push 方法。

void push(int a)
    {
        q2.add(a);
        while(!q1.isEmpty()){
            q2.add(q1.remove());
        }
        Queue<Integer> tmpq=q2;
        q1=tmpq;
        while(!q2.isEmpty()){
            q2.remove();
        }
    }

主要思想是将 q1 替换为 q2。令人惊讶的是,这不起作用,因为当运行最后一个清空 q2 的 while 循环时,它也会使 tmpq 和 q1(现在已替换为 tmpq)队列为空。

但是当我进行以下更改时,它运行良好:

void push(int a)
    {
        q2.add(a);
        while(!q1.isEmpty()){
            q2.add(q1.remove());
        }
        Queue<Integer> tmpq=q2;
        q2=q1;
        q1=tmpq;   

    }

队列 tmpq 是否通过引用传递 q2,因为它不是原始数据类型,所以对 q2 进行任何更改都会影响 tmpq 相似性?

【问题讨论】:

    标签: java data-structures reference queue pass-by-reference


    【解决方案1】:

    没错。您正在传递对对象的引用,而不是复制它。参见https://stackoverflow.com/a/40523/13373270的解释。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 2013-09-10
      • 2021-08-15
      • 2018-06-29
      • 2020-04-01
      相关资源
      最近更新 更多