У меня есть вопрос относительно поведения итератора в Java.Поведение итератора в Java
У меня есть вызов, например, как это:
myIterable.iterator().hasNext()
Если этот вызов возвращает истину, я могу быть уверен, что коллекция имеет по крайней мере два элемента? Из спецификации API Java я мог только узнать, что истина означает, что есть еще один элемент, который может быть достигнут next()
. Но что произойдет, если указатель находится в самом начале (то есть ли hasNext()
может распознавать первый элемент отдельно)
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Iterator.html
это говорит верно, если итерация имеет больше элементов. Но еще один элемент также может означать самый первый?
[Редактировать]
Как я могу узнать, есть ли итератор ровно два элемента перебрать? Конечно, я могу повторять и подсчитывать, но я не могу вернуться или повторить или дважды повторить итератор в моем случае, это итератор Hadoop.
'myIterable.iterator()' всегда начинается в начале итерации. –
Если вы * можете * хранить элементы, вы можете поместить их в список (или любую другую коллекцию) и получить размер коллекции с помощью метода 'size()'. Вы всегда можете перебирать новую коллекцию. В противном случае вам нужно будет получить количество элементов другим способом. –
Примечание: вам не нужно использовать «спасибо» все время (на самом деле это не политика). Не нужно также добавлять [РЕШЕНО] к вопросу, вы приняли ответ. Вы не можете/не должны использовать это, чтобы получать меньше ответов, это один из побочных эффектов использования stackoverflow :) –