堆栈不将项目推入集合

Stack not pushing items into the collection

我的采集实现如下:

    private void init(Node<K, E> root) {
        Node<K,E> node = root;

        while (node != null) {
            stack.push(node);
            node = node.getLeft();
        }
    }

但是当它被调用和使用时,Stack中似乎什么都没有。我已经尝试过详尽的调试但没有任何效果,关于我实现上述组件的方式可能出了什么问题有什么建议吗?

您已将 Stack 设为不可变。当您调用 push() 方法时,它实际上并没有将节点压入堆栈,而是 returns 一个新的不可变 Stack 并将该元素压入堆栈。当调用所有修改方法如pushpop时,在行前添加stack =以将新返回的堆栈分配回stack

例如替换

stack.push(node);

stack = stack.push(node);