我正在尝试使用Java 8 Stream API进行游戏,并希望使用Java 8流过滤器映射reduce转换以下方法.
我有一个电影列表,每个电影对象都有一个演员列表和其他字段.
我想找到所有具有特定名字和名字的演员在其中工作的电影.
下面的方法是基于Java 7的,我循环播放电影列表,然后循环播放该电影的演员列表.如果找到具有该名字和姓氏的演员,我将打破内部循环并将该影片添加到返回的电影列表中.
评论的代码有效,我可以获得正确的电影列表.
我的问题是如何使用Java 8流重新编写此代码.我可以看到它是一个地图,过滤,减少问题,但我无法想出一个明确的解决方案.
public List<Movie> getMoviesForActor(String firstName, String lastName) {
final List<Movie> allMovies = movieRepository.getAllMovies();
final Predicate<Actor> firstNamePredicate = actor -> actor.getFirstName().equalsIgnoreCase(firstName);
final Predicate<Actor> lastNamePredicate = actor -> actor.getLastName().equalsIgnoreCase(lastName);
final List<Movie> movies = new ArrayList<>();
// for (Movie movie : allMovies) {
// boolean actorFound = false;
// for (Actor actor : movie.getActors()) {
// if(firstName.equalsIgnoreCase(actor.getFirstName()) && lastName.equalsIgnoreCase(actor.getLastName())) {
// actorFound = true;
// break;
// }
// }
// if(actorFound) …Run Code Online (Sandbox Code Playgroud)