Как собрать данные внутри Java Stream из внешнего сервиса? - PullRequest
0 голосов
/ 17 ноября 2018

У меня такой код Java 7

List<String> foodPreferencesStr = ... populating this list

EdamamRequestModel params = new EdamamRequestModel();
List<EdamamRecipeModel> recipesList = new ArrayList<EdamamRecipeModel>();

for(String pref : foodPreferencesStr) {
    params.setQ(pref);
    params.setFrom(fromInt);
    params.setTo(toInt);
    recipesList.addAll(edamamService.searchRecipe(params));
}

Как сделать это Java 8 с Stream API?

Я пытался сделать так

List<EdamamRecipeModel> recipesList = foodPreferencesStr.stream()
        .map(pref -> {
            params.setQ(pref);
            params.setFrom(fromInt);
            params.setTo(toInt);

            return params;
        }).collect(...);

но не понимаю, как вызвать edamamService.searchRecipe(params) внутри Stream API и добавить весь его результат в List<EdamamRecipeModel> recipesList

Пожалуйста, совет.

1 Ответ

0 голосов
/ 17 ноября 2018
List<EdamamRecipeModel> recipesList = foodPreferencesStr.stream()
        .map(pref -> {
            EdamamRequestModel params = new EdamamRequestModel();

            params.setQ(pref);
            params.setFrom(fromInt);
            params.setTo(toInt);

            return params;
        })
        .map(params -> edamamService.searchRecipe(params))
        .flatMap(List::stream)
        .collect(Collector.toList());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...