1
votes

comment remplacer la boucle for par forEach

Mon code est,

String Number = "123";
boolean NumberPresent = false;
List < Summary > smryList = smryListResponse.getSummaryList();

for (int i = 0; i < smryList.size(); i++) {
    if (Number.equals(smryList.get(i).getNumber())) {
        NumberPresent = true;
        break;
    }
}
if (NumberPresent) {
   //perform some actions
}

Comment puis-je remplacer cette fonctionnalité de for loop complete par forEach ?


4 commentaires

Je vote pour clore cette question car il s'agit clairement d'un devoir et vous devez nous montrer ce que vous avez tenté en premier.


geeksforgeeks.org/for-each-loop-in-java


Ouais, ça ressemble à un problème de devoirs. Je suppose que la première question pour l'affiche originale est: "Dites-moi en une seule phrase ce que fait ce code."


@David Brossard: Je sais comment remplacer la boucle for par foreach, mais ma fonctionnalité actuelle a aussi une instruction break. Je voulais savoir comment utiliser break with foreach?


3 Réponses :


6
votes

de cette façon, vous pouvez appliquer pour chaque boucle.

for (Summary summary: smryList) {
    if (Number.equals(summary.getNumber())) {
        NumberPresent = true;
        break;
    }
    // ... 
}


0 commentaires

2
votes

Vous n'avez pas besoin d'utiliser for ou forEach si vous souhaitez détecter le numéro présenté. Vous pouvez utiliser des flux avec la méthode .anyMatch() .
Par exemple:

String number = "123";    
List<Summary> smryList = smryListResponse.getSummaryList();
boolean isNumberPresent = smryList
                           .stream()
                           .anyMatch(summary -> summary.getNumber().equals(number));
if (isNumberPresent) {
    // ...
}

Vous pouvez également essayer de le faire avec d'autres méthodes de flux, par exemple .filter() ou autre. Mais je préfère utiliser .anyMatch() .

Remarque: les flux et les expressions lambda fonctionnent uniquement avec Java 8 ou version ultérieure . Sinon, utilisez une solution déjà publiée


0 commentaires

0
votes

vous pouvez remplacer la boucle for par cette boucle.

smryList.forEach(summary -> {//code here
        });

sinon, vous pouvez essayer

 for (Summary summary : smryList) {
            if (Number.equals(summary.getNumber())) {
                NumberPresent = true;
                break;
            }
        }


0 commentaires