forEach()
ラムダ式の可能性を発見するために、いくつかのfor-eachループをラムダメソッドに変更しようとしています。以下が可能であるようです:
ArrayList<Player> playersOfTeam = new ArrayList<Player>();
for (Player player : players) {
if (player.getTeam().equals(teamName)) {
playersOfTeam.add(player);
}
}
ラムダ付き forEach()
players.forEach(player->{if (player.getTeam().equals(teamName)) {playersOfTeam.add(player);}});
しかし、次のものは機能しません:
for (Player player : players) {
if (player.getName().contains(name)) {
return player;
}
}
ラムダ付き
players.forEach(player->{if (player.getName().contains(name)) {return player;}});
最後の行の構文に何か問題がありますforEach()
か、それともメソッドから戻ることは不可能ですか?
return
ステートメント内ではラムダはラムダと呼ばれるものからではなく、ラムダ自体から戻ります。Ian Robertsの回答にfindFirst
示されているように、ストリームの早期終了(「短絡」)の使用。