我喜欢使用带有迭代器原理的 for 循环,比如
for(String s : collectionWithStrings)
System.out.println(s + ", ");
问题:如何确定当前元素是否是最后一个?
使用这样的自己的索引int = 0; i < collection.size(); i++
是可能的i == collection.size() - 1
,但不是很好。对于上面的示例,是否也可以使用迭代器确定最后一个元素?
实际上,该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 循环时的一个决定性因素。
使用 an 时Iterator
,可以访问在hasNext()
处理最后一个元素时将返回 false 的方法。