Есть ли лучшая логика для проверки нуля в цикле while?

1

Вот мой код:

while (itr.hasNext()) {
    System.out.println(itr.next());
}

itr - тип Iterator.

Если itr имеет значение null, тогда я столкнулся с исключительным исключением.

Я попытался использовать if condition чтобы проверить, не является ли itr не itr null до while loop.

Как показано ниже:

if (itr != null) {
    while (itr.hasNext()) {
        System.out.println(itr.next());
    }
}

Есть ли другой лучший способ сделать это?

  • 0
    Если 'itr' равно нулю, вы не должны приближаться к этому циклу.
Теги:
loops

4 ответа

1

Код, который вы используете, будет генерировать исключение Null Pointer только в том случае, если вы намеренно присваиваете значение null Iterator. Напр. Ниже код не будет генерировать исключение, даже если exampleList не был назначен никаких элементов.

List<String> exampleList = new ArrayList<String>();

Iterator<String> itr = exampleList.iterator();

while (itr.hasNext()) {
   System.out.println(itr.next());
}

Но ниже код будет генерировать исключение нулевого указателя, поскольку вы пытаетесь создать итератор в списке Null.

List<String> exampleList = null;         
Iterator<String> itr = exampleList.iterator();

while (itr.hasNext()) {
   System.out.println(itr.next());
}

Проверьте свой код, если вы инициализируете список, в котором вы создаете итератор. Если вы делаете это правильно, тогда нет необходимости проверять указатель Null.

0

Просто чтобы добавить еще один ответ в микс, для разнообразия:

while(Optional.ofNullable(itr).orElse(EmptyIterator.INSTANCE).hasNext()) {
    System.out.println(itr.next());
}

Или, может быть:

Optional.ofNullable(itr).map(item -> {
    while(item.hasNext()) {
        System.out.println(item.next());
    }
});

Теперь убедитесь, что.map будет обрабатывать возврат println void.

0

u также может попробовать обратный цикл:

if (null != itr && itr.hasNext()) {
  do {
    System.out.println(itr.next());
  } while (itr.hasNext());
}
0

Ваш подход кажется лучше, но вот еще один способ сделать это:

while (itr != null && itr.hasNext()) {
    System.out.println(itr.next());
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню