Ich versuche, einige for-each-Schleifen in Lambda- forEach()
Methoden zu ändern, um die Möglichkeiten von Lambda-Ausdrücken zu entdecken. Folgendes scheint möglich zu sein:
ArrayList<Player> playersOfTeam = new ArrayList<Player>();
for (Player player : players) {
if (player.getTeam().equals(teamName)) {
playersOfTeam.add(player);
}
}
Mit Lambda forEach()
players.forEach(player->{if (player.getTeam().equals(teamName)) {playersOfTeam.add(player);}});
Aber der nächste funktioniert nicht:
for (Player player : players) {
if (player.getName().contains(name)) {
return player;
}
}
mit Lambda
players.forEach(player->{if (player.getName().contains(name)) {return player;}});
Stimmt etwas in der Syntax der letzten Zeile nicht oder ist es unmöglich, von der forEach()
Methode zurückzukehren?
return
innerhalb einer Aussage kehrt Lambda vom Lambda selbst zurück, nicht von dem, was Lambda genannt wird. Sie beenden einen Stream vorzeitig ("Kurzschluss"), findFirst
wie in der Antwort von Ian Roberts gezeigt .