Как определить последний элемент при использовании итератора?

Я люблю использовать цикл for с принципом итератора, например

for(String s : collectionWithStrings)
    System.out.println(s + ", ");

вопрос:Как я могу определить, является ли текущий элемент последним?

с собственным индексом, как int = 0; i < collection.size(); i++ С i == collection.size() - 1, но не приятно. Можно ли также определить последний элемент с помощью итератора для примера выше?

3 ответов


действительно,Iterator#hasNext метод возвращает логическое определение, если итератор вернет другой элемент с next метод.

ваша итерация может быть поставлена следующим образом:

Iterator<String> iterator = collectionWithString.iterator();
while(iterator.hasNext()) {
    String current = iterator.next();
    // if you invoke iterator.hasNext() again you can know if there is a next element
}

просто использовать hasNext метод.

if(!iterator.hasNext()) {
    // this is the last element
}

обычно мы повторяем с помощью Iterator а так:

while(iterator.hasNext()) {
    Object obj = iterator.next();
}

Это невозможно с улучшенный цикл for без поддержания вашего собственного счетчика. Честно говоря, это мой единственный решающий фактор, когда я выбираю, какой тип цикла for использовать.

при использовании Iterator, с hasNext() метод, который вернет false при обработке последнего элемента.