2

簡単な質問です。たとえば、CarクラスはHashMap(String、String)を拡張します。

1.1。

for (Car car : carList) {
    if (car.isEmpty) {
        break;
    }
    doSomething();
}

2.2。

for (Car car : carList) {
    if (!car.isEmpty) {
        doSomethingElse();
    }
}

上記の2つのうちどちらが良いですか?ありがとう。

----編集済み----申し訳ありませんが、私の主張を明確にしませんでした。

doSomething()メソッドは、実際にはさまざまなことを行っています。それらをdoSomething()とdoSometingElse()に変更しました。

私の質問は、すべてのプロセスを1つのif()にまとめますか?または、if()条件が満たされない場合は、最初にループを中断します。

ありがとう。

4

8 に答える 8

8

彼らは完全に異なることをします。前者は条件が真になるとすぐに反復を停止しますが、後者は条件が偽である反復中の処理をスキップするだけです。

break最初にをに変更するcontinueと、同じように機能します。

于 2010-10-20T01:37:23.967 に答える
1

彼らは完全に異なることをします。最初の空の車を見た後、最初のものは停止します。2番目のバージョンは、空でない車ごとに「何かをする」でしょう。continueの代わりに演算子を使用することをお勧めしますbreak

于 2010-10-20T01:36:47.557 に答える
0

これらの2つのループは同じことをしません

  1. isEmptyが最初の空の車の後の車をスキップして、空の車を最初に見つけたときにループを終了します。break' 'を''にcontinue変更すると、これを2のように機能させることができます。

  2. 空でないすべての車のために何かをします。

于 2010-10-20T01:37:56.717 に答える
0

何をしようとしているかによって異なりますが、最初のループは条件が満たされるとすぐに終了し、2番目のループはすべてのハッシュマップを反復処理します。

于 2010-10-20T01:38:14.930 に答える
0

あなたが実際に「中断」ではなく「継続」を意味するのであれば、継続または中断を使用しない方が良いと思います。

大したことではありませんが、continue、break、returnなどのステートメントはすべて、基本的には少しドレスアップされたgotoステートメントです。行やラベルに移動する代わりに、制御構造の上部または下部に移動します。プログラマーは、それを追跡するときに少し考える必要があります。これは、時間の浪費とエラーの可能性が増えることを意味します。

それはそれほど大したことではなく、多くの場合、これらの構造は実際にコードを明確にしますが、選択肢があり、本質的に同じことをしているように見える場合は、他の場所に制御を送信する必要がない方法を実行してください。

于 2010-10-20T01:44:06.663 に答える
0

車が空かどうかに基づいて異なる動作が必要な場合は、ifelseステートメントを使用できます。carListの反復を停止する場合は、breakを使用します。

for (Car car : carList) {
   if (car.isEmpty) {
      doSomething();
   }
   else {
      doSomethingElse();
   }
}
于 2010-10-20T01:46:15.410 に答える
0

皆が指摘しているように、休憩バージョンは早く終了します。その場合、答えはあなたが何をしたいかによって異なります。

あなたがする必要があることをし終えたら、あなたが終わったらすぐに抜け出してください。なぜCPUサイクルを浪費するのですか?一方、dosomethingelse()を実行するためにリスト全体を確認する必要がある場合は、問題が発生しないようにしてください。

2つの異なる名前の関数を持つことを意図していましたか、それとも両方ともdosomething()と呼ばれるべきですか?

于 2010-10-20T01:50:02.503 に答える
0

これはあなたが探しているものですか?

for (Car car : carList) {
    if (car.isEmpty) {
         doSomething();
    }
    else {
         doSomethingElse();
    }       
}

またはあなたは探していますか

for (Car car : carList) {
    if (car.isEmpty) {
       break; 
       //STOP ITERATING THROUGH THE REST OF THE LIST 
       //(doSomething & soSomethingElse may have been called a few times already)
    }
    else {
        doSomething();
    }
    doSomethingElse();
}

他のオプションもありますが、あなたの説明はまだ明確ではありません...とにかく私には...

于 2010-10-20T01:52:23.417 に答える