3

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

2 に答える 2

2

continue をイテレータで使用しても問題はありません。拡張された for ループ (for each ループ) でこれを使用することもできます。

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

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

continue2 ならa があるからです。 a で順序が保証されていないSetので、出力も

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