3

我遍历一个集合。如果未设置 CarDetail 的值,我希望循环从下一个 CarDetail 重新开始。但不知何故,我的继续不起作用。是否可以将 continue 与迭代器一起使用?

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
}
4

2 回答 2

2

将 continue 与迭代器一起使用并没有错。您甚至可以将其与增强的 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 语句,我们可以验证 continue 是否按预期工作。

于 2013-03-01T18:10:48.523 回答
0

如果您愿意,您可以直接遍历 aSet而无需在循环中Iterator使用 and 。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,则存在 a。由于无法保证 a 中的排序Set,因此输出也可能是

Current set element is 3
Current set element is 1
于 2013-03-01T18:12:08.800 回答