【问题标题】:Java poll() inside if statementif 语句中的 Java poll()
【发布时间】:2016-12-30 20:41:38
【问题描述】:

我对 if 语句中函数的执行有一点疑问。

例如这个edges(integers)的列表,所有的值都会从列表中删除,直到它从列表中拉出5,或者会发生什么?

LinkedList<Integer> edges = new LinkedList<>();

for (int i = 0; i < edges.size(); i++) {
        if(edges.poll() == 5){
            break;
        }
}

【问题讨论】:

  • 你试过运行它吗?
  • 函数poll()等价于remove()函数。因此,每次您拨打edges.poll() 时,都会删除列表中的一项。然后,edges.size() 将被更新。
  • 刚刚发现它确实删除了这些项目,即使它在 if 中。仍然会不回答,也许有人对此有一个卷轴的解释。
  • 它是if 声明的事实并不相关。为了判断edges.poll() == 5 是否必须调用poll,这会从列表中删除第一项。这不会因为值不是 5 而被撤消。

标签: java if-statement linked-list queue


【解决方案1】:

Yes - poll 删除列表中的第一项并将其返回。 这将在您的 if 语句中进行评估。

另外,值得一提的是,edges 的大小显然会在每个循环中发生变化,因为轮询 edges 会将元素计数减一。但是,您的 for 循环只计算一次 edges 的大小 - 在进入时。例如,更好的实现方式是使用 while 循环。

int i = 0;

while(i<edges.size())
{
    if(edges.poll() == 5)
    {
        break;
    }
    i++
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-29
    • 2015-08-18
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多