Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
if语句中的Java poll()_Java_If Statement_Linked List_Queue - Fatal编程技术网

if语句中的Java poll()

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=新建

我对if语句中函数的执行有一个小问题

例如,此
边(整数)
列表中的所有值都将从列表中删除,直到从列表中拉出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
语句并不相关。为了告诉if
edges.poll()==5
,必须调用
poll
,这将从列表中删除第一项。这不会因为值不是
5
而撤消。