我有一个电影对象列表,其中包含标题,制片人,导演,演员和发行年份。我需要查找哪部电影是由指定导演执导的。然后将所有找到的电影存储在地图中,并使用Director作为键,并将电影标题作为值。我想出了以下代码,但找不到任何电影,但实际上数据中有几部电影是由给定导演执导的。
String directors = "Wes Craven,John Carpenter,Alfred Hitchcock";
String[] st = directors.split(",");
Map<String,List<String>> map = data.stream()
.filter(movie -> movie.getDirectors().contains(st[0]) && movie.getDirectors().contains(st[1]) && movie.getDirectors().contains(st[2]))
.collect(Collectors.toMap(Movie::getTitle),m-> m.getDirectors());
map.forEach((m,n) -> System.out.println(m+" : "+n));
答案 0 :(得分:0)
如果没有其他信息,很难说出问题所在。但是,我建议您执行以下操作来解决您的问题:
hasDirector(String)
添加Movie
方法,如果电影具有给定的导演,则返回true
hasAllDirectors(String[])
添加Movie
方法,如果电影具有所有给定的导演,则返回true
movieList.stream().filter(m -> m.hasAllDirectors(directorArray))
,其中directoryArray
是String[]
如果仍然无法使用,请返回此论坛