如何使用流搜索List <strings>包含字符串的给定array []的所有值?

时间:2019-10-24 02:04:54

标签: java java-stream

我有一个电影对象列表,其中包含标题,制片人,导演,演员和发行年份。我需要查找哪部电影是由指定导演执导的。然后将所有找到的电影存储在地图中,并使用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));

1 个答案:

答案 0 :(得分:0)

如果没有其他信息,很难说出问题所在。但是,我建议您执行以下操作来解决您的问题:

  1. hasDirector(String)添加Movie方法,如果电影具有给定的导演,则返回true
  2. 添加单元测试以确保其正常工作
  3. hasAllDirectors(String[])添加Movie方法,如果电影具有所有给定的导演,则返回true
  4. 添加单元测试以确保其正常工作
  5. 将您的代码转换为movieList.stream().filter(m -> m.hasAllDirectors(directorArray)),其中directoryArrayString[]
  6. 添加单元测试以确保其正常工作

如果仍然无法使用,请返回此论坛

相关问题