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
?
3 Réponses :
de cette façon, vous pouvez appliquer pour chaque boucle.
for (Summary summary: smryList) { if (Number.equals(summary.getNumber())) { NumberPresent = true; break; } // ... }
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
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; } }
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?