2016-12-30 3 views
-4

У меня был небольшой вопрос о выполнении функций внутри оператора if.Java poll() внутри оператора if

Например, этот список edges(integers), все значения будут удалены из списка, пока он не вытащит 5 из списка, или что произойдет точно?

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

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

Вы пробовали его запустить? –

+0

Функция 'poll()' эквивалентна функции 'remove()'. Поэтому при каждом вызове 'edge.poll()' один элемент списка будет удален. И затем, 'edge.size()' будет обновляться. –

+0

Просто обнаружил, что он действительно удаляет эти элементы, хотя он находится внутри if. По-прежнему оставит без ответа, возможно, у кого-то есть объяснение барабана. – kobey

ответ

0

Да - опрос удаляет первый элемент в списке и возвращает его. Это будет затем оценено в вашем операторе if.

На несвязанной ноте, следует отметить, что размер краев будет, очевидно, изменить на каждом цикле, так как избирательные краев уменьшает количество элементов на единицу. Тем не менее, ваш цикл for вычисляет размер ребер ровно один раз - на входе. Лучшим способом реализации этого было бы, например, использование цикла while.

int i = 0; 

while(i<edges.size()) 
{ 
    if(edges.poll() == 5) 
    { 
     break; 
    } 
    i++ 
} 
Смежные вопросы