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?