2 votes

Utiliser break dans une boucle for ou pas ?

Juste une petite question, disons que la classe Car étend HashMap(String, String).

1.

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

2.

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

Lequel des deux ci-dessus est le meilleur ? Merci.

---- édité ---- Désolé, je n'ai pas été assez clair.

La méthode doSomething() fait en fait différentes choses. Je les ai changées en doSomething() et doSometingElse().

Ma question est la suivante : allez-vous mettre tout le processus dans un seul if() ? ou bien rompre d'abord la boucle si la condition if() n'est pas satisfaite.

Merci.

0voto

HappyFunCoder Points 11

Si vous souhaitez un comportement différent selon que la voiture est vide ou non, vous pouvez utiliser une instruction if else. Utilisez break si vous voulez arrêter l'itération de carList.

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

0voto

Matt Points 8168

Comme tout le monde l'a souligné, la version break se termine tôt. La réponse dépend donc de ce que vous voulez qu'elle fasse.

Si vous avez fini de faire ce que vous aviez à faire, sortez dès que vous avez terminé. Pourquoi gaspiller les cycles du CPU ? D'un autre côté, si vous devez parcourir toute la liste pour dosomethingelse(), ne vous arrêtez pas.

S'agissait-il d'avoir deux fonctions nommées différemment ou devaient-elles toutes deux s'appeler dosomething() ?

0voto

MadMurf Points 1529

C'est ce que vous cherchez ?

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

Ou bien cherchez-vous

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();
}

Il existe également d'autres options, votre clarification n'est toujours pas claire... pour moi en tout cas...

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X