当前位置: 首页 > 知识库问答 >
问题:

在堆栈上抛出节点列表的元素

国晟睿
2023-03-14

我使用的是Java,我有一个节点列表,我需要在堆栈上按照从最后一个到第一个的顺序使用List。

例:

我的列表是{node1, node2, node3}

我的堆栈应该是

{

节点1,

节点2,

节点 3

}

我如何轻松解决这个问题?

这行得通吗?

if (hasWhiteNeighbor(startNode)) {
        List<Node> conNodes = getAdjacentNodes(startNode);
        while (conNodes.size() > 0) {
            int conCount = conNodes.size();
            stack.push(conNodes.get(conCount));
            conNodes.remove(conCount);
        }
    }

共有1个答案

祝高阳
2023-03-14

由于列表保证迭代的顺序与元素添加的顺序相同,因此可以通过简单地以正确的顺序将节点添加到列表中,然后遍历列表并将每个元素添加到堆栈中,轻松解决此问题。

List<String> stringList = new ArrayList<String>();
stringList.add("node1");
stringList.add("node2");
stringList.add("node3");

Deque<String> stringStack = new ArrayDeque<String>();
for (String s : stringList) {
  stringStack.push(s);
}

while (!stringStack.isEmpty()) {
  System.out.println(stringStack.pop());
}

上面的代码生成以下输出:

node3
node2
node1

链接< br > http://docs . Oracle . com/javase/7/docs/API/Java/util/list . html < br > http://docs . Oracle . com/javase/7/docs/API/Java/util/stack . html < br > http://docs . Oracle . com/javase/7/docs/API/Java/util/deque . html

 类似资料:
  • 问题内容: 每当我在Java中启动列表时,我都会 我假设这将在堆上分配列表。不知道我是否可以在堆栈上分配列表? 问题答案: 所有对象(包括其各个属性)都存储在堆中。 所有局部变量及其参数都存储在堆栈中,因为它们包含原始值或引用。 但是,在特殊情况下,java虚拟机可能会执行转义分析并决定在堆栈上分配对象(包括your ),但这通常不会发生,也不是主要问题。 通常,如果在堆栈上分配对象,则在调用引用

  • 在一次关于使用异常与返回值的讨论和研究中,以下内容引起了我的注意: 请假设在方法中的那一点抛出一个异常是有意义的(这是一个异常情况),并且它不是针对控制流(这是一个已知的错误)。仅出于性能原因,才会首选返回值。

  • Edit2 @Paradematic在建议重定向而不是抛出异常方面做得很好;这解决了日志记录问题。Play 2中的问题是,重定向需要发生在所谓的范围内,而日期解析器调用并不总是这样。 最初的 有一个问题,即我的application.log被与uri日期解析器操作相关的错误填满,如果给定有效的uri日期,该操作应该成功。 然而,一些用户试图通过输入无效日期来规避这一点,希望获得免费访问付费订阅者专

  • 当我运行代码时,Node。js抛出由过多递归调用引起的异常。我试图增加Node。js-stack-size-by,但是node。js崩溃,没有任何错误消息。当我在没有sudo的情况下再次运行时,请选择Node。js打印。有没有可能在不删除递归调用的情况下解决这个问题?

  • 我在BigQuery中有一个表,它每天获取新数据并将其附加到当前表中。此表称为:。此外,我每天都会保存各个分数,如果我们选择今天的日期,可以访问这些分数。每日分数每天都会附加到。 包含: 我希望看到用户分数的变化。每次用户获得新分数时,我们都会水平追加。每次我们获得新用户时,我们都会垂直追加。假设用户每天只能获得1个分数,理想的解决方案是: 例如,水平增长(新得分)和垂直增长(新用户)的表格 我可

  • 我已经有一个stack类在工作,但是现在我每次只能弹出一个元素,我希望能够同时弹出多个元素。无需多次使用推送和弹出。我试图创建两个函数来实现这一点。函数pushAll和popN。比如: 备注:输入参数all是一个数组,包含所有必须输入的元素。向量的最后一个元素必须在叠加后位于顶部。如果没有空间插入所有元素,则必须不插入任何元素,并且必须引发StackFullException异常。popN方法弹出