Объясните мне пожалуйста,почему когда я работаю с итератором и забываю проинициализировать сам итератор, то такой цикл будет продолжаться бесконечно?
//этот работает верно
Iterator<Object> iterator2 = set.iterator();
while(iterator.hasNext())
set2.add(iterator.next());
//а вот этот уже начнет разгонять мой процессор до сверхскоростей и все бестолку
while(set.iterator().hasNext())
set2.add(set.iterator().next());
set.iterator() всегда создает новый итератор; в первой части вашего кода вы создаете его только один раз:
Iterator<Object> iterator2 = set.iterator();
и так он в последующем цикле наконец исчерпается, iterator.hasNext() возвратит значение falseи цикл онончится,
но во второй части вы его создаете в цикле опять и опять:
while(set.iterator().hasNext())
и так как он всегда свежий, метод .hasNext() опять и опять возвращает значение true и поэтому цикл опять и опять продолжается - до бесконечности.
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости