Как найти, что List <strings>содержит все значения заданных массивов [] строки, используя поток? - PullRequest
0 голосов
/ 24 октября 2019

У меня есть список объектов фильма, который содержит название, продюсеров, режиссеров, актеров и год выпуска. Мне нужно найти, какой фильм режиссер данного режиссера. затем сохраните все найденные фильмы на карте, используя директора в качестве ключей и названия фильмов в качестве значения. Я придумал следующий код, но он не находит ни одного фильма, но на самом деле в данных есть несколько фильмов, снятых режиссерами.

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 голосов
/ 24 октября 2019

Сложно сказать, что происходит, без дополнительной информации. Однако я предлагаю вам сделать следующее, чтобы решить вашу проблему:

  1. Добавьте метод hasDirector(String) к Movie, который возвращает true, если у фильма есть заданный режиссер
  2. Добавитьмодульные тесты, чтобы убедиться, что он работает
  3. Добавьте метод hasAllDirectors(String[]) к Movie, который возвращает true, если у фильма есть все указанные режиссеры
  4. Добавьте модульные тесты, чтобы убедиться, что он работает
  5. Переведите ваш код в movieList.stream().filter(m -> m.hasAllDirectors(directorArray)), где directoryArray является String[]
  6. Добавьте модульные тесты, чтобы убедиться, что он работает

Вернитесь на этот форумесли это все еще не работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...