我喜欢使用带有迭代器原理的for循环,比如
for(String s : collectionWithStrings)
System.out.println(s + ", ");
问题:如何确定当前元素是否是最后一个元素?
使用像int = 0; i < collection.size(); i++
这样的自己的索引,这可以i == collection.size() - 1
,但不是很好。是否也可以使用上述示例的迭代器确定最后一个元素?
答案 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。