if语句中的Java poll()
我对if语句中函数的执行有一个小问题 例如,此if语句中的Java poll(),java,if-statement,linked-list,queue,Java,If Statement,Linked List,Queue,我对if语句中函数的执行有一个小问题 例如,此边(整数)列表中的所有值都将从列表中删除,直到从列表中拉出5为止,或者会发生什么 LinkedList<Integer> edges = new LinkedList<>(); for (int i = 0; i < edges.size(); i++) { if(edges.poll() == 5){ break; } } LinkedList Edge=新建
边(整数)
列表中的所有值都将从列表中删除,直到从列表中拉出5为止,或者会发生什么
LinkedList<Integer> edges = new LinkedList<>();
for (int i = 0; i < edges.size(); i++) {
if(edges.poll() == 5){
break;
}
}
LinkedList Edge=新建LinkedList();
对于(int i=0;i
是-轮询删除列表中的第一项并返回它。
然后将在if语句中对此进行计算
另一方面,值得一提的是,在每个循环中,边的大小都会发生明显的变化,因为轮询边会将元素数减少一个。但是,for循环在输入时只计算一次边的大小。例如,更好的实现方法是使用while循环
int i = 0;
while(i<edges.size())
{
if(edges.poll() == 5)
{
break;
}
i++
}
inti=0;
while(i)您试过运行它吗?函数poll()
相当于remove()
函数。因此,每次调用edges.poll()
,列表中的一项将被删除。然后,edges.size()
将被更新。刚发现它确实删除了这些项目,即使它在if中。仍然会让人无法回答,可能有人对此有一个解释。事实上,它是一个if
语句并不相关。为了告诉ifedges.poll()==5
,必须调用poll
,这将从列表中删除第一项。这不会因为值不是5
而撤消。