迭代设置并继续

时间:2013-03-01 18:04:44

标签: java iterator

我遍历一个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
}

2 个答案:

答案 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