7

我喜欢使用带有迭代器原理的 for 循环,比如

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

问题:如何确定当前元素是否是最后一个?

使用这样的自己的索引int = 0; i < collection.size(); i++是可能的i == collection.size() - 1,但不是很好。对于上面的示例,是否也可以使用迭代器确定最后一个元素?

4

3 回答 3

8

实际上,该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
}
于 2013-02-05T14:55:21.793 回答
5

只需使用hasNext方法。

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

通常,我们使用Iterator如下迭代:

while(iterator.hasNext()) {
    Object obj = iterator.next();
}
于 2013-02-05T14:55:29.953 回答
3

在不维护自己的计数器的情况下,使用增强的 for 循环是不可能的。老实说,这是我选择使用哪种类型的 for 循环时的一个决定性因素。

使用 an 时Iterator,可以访问在hasNext()处理最后一个元素时将返回 false 的方法。

于 2013-02-05T14:55:26.287 回答