使用迭代器时如何确定最后一个元素?

时间:2013-02-05 14:53:01

标签: java iterator

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

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

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

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

3 个答案:

答案 0 :(得分: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
}

答案 1 :(得分:5)

只需使用hasNext方法。

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

通常情况下,我们使用Iterator进行迭代:

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

答案 2 :(得分:3)

如果没有维持自己的计数器enhanced for loop,则无法实现。说实话,当我选择使用哪种类型的for循环时,这是我的唯一决定因素。

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