Вы столкнетесь с этой ошибкой, когда в вашей коллекции будет разное количество элементов, вам не следует дважды вызывать next()
, не убедившись, что там что-то есть; делая это, вы, по сути, ломаете точку while loop
.
next()
будет работать до тех пор, пока в коллекции есть что-то, что можно получить. Это пример кода, который отлично работает на JDK1.6.0_23
Collection<String> aCollection = new ArrayList<String>();
aCollection.add("1");
aCollection.add("2");
Iterator<String> i = aCollection.iterator();
String firstString = null;
String secondString = null;
while (i.hasNext()) {
firstString = (String) i.next();
secondString = (String) i.next();
}
System.out.println(firstString);
System.out.println(secondString);
Если вы добавите еще String
в Collection
, вы получите NoSuchElementException
, как вы описали. Либо у вас должно быть два отдельных итератора для одних и тех же данных, либо вам нужно поставить еще одну проверку в цикле while
, чтобы убедиться, что в коллекции еще осталось что-то, прежде чем пытаться ее извлечь.