我遍历一个Set。 如果未设置CarDetail的值,我希望循环再次使用下一个CarDetail。 但不知怎的,我的继续不会工作。是不是可以使用迭代器继续?
final Set<CarDetail> tmpDetail = new HashSet<CarDetail>(details);
for(Iterator<CarDetail> iter = tmpDetail.iterator(); iter.hasNext();){
CarDetail detail = iter.next();
if(detail.getBack() == null){
continue;
}
... do something
}
答案 0 :(得分:2)
使用继续迭代器没有任何问题。您甚至可以使用增强的for循环(对于每个循环):
final Set<CarDetail> tmpDetail = new HashSet<CarDetail>(details);
for(CarDetail detail : tmpDetail) {
if(detail.getBack() == null) {
System.out.println("Skipping over " + detail.toString() );
continue;
}
System.out.println("Processing car detail: " + detail.toString() );
//... do something
}
您如何确定在您发布的代码中忽略了continue语句? 通过一些小的println语句,我们可以验证继续是否正常工作。
答案 1 :(得分:0)
如果您愿意,可以直接迭代Set
而无需获取Iterator
并在循环中使用continue
。这是一个例子:
Set<Integer> intSet = new HashSet<Integer>();
intSet.add(1);intSet.add(2);intSet.add(3);
for(Integer setElem : intSet)
{
if(setElem.intValue() == 2) continue;
System.out.println("Current set element is " + setElem);
}
仅打印
Current set element is 1
Current set element is 3
因为continue
如果它是2.因为不能保证在Set
中排序,输出也可能是
Current set element is 3
Current set element is 1