Преобразование старого цикла в цикл Java8 - PullRequest
0 голосов
/ 30 ноября 2018

Я полностью новичок в Java8, у меня есть этот кусок кода

for (Menu menu : resto1.getMenu()) {
    MainIngredient mainIngredient = MainIngredient.getMainIngredient(menu.getName());
}

, который я хочу реорганизовать, чтобы сделать его быстрее, и я хотел бы преобразовать его в

List<CompletableFuture<MainIngredient>>

Я пытался

List<CompletableFuture<MainIngredient>> priceFutureList = resto1.getMenu().stream()
            map(menu -> CompletableFuture.supplyAsync(() -> MainIngredient.getMainIngredient(menu.getName()), executorService));

, но я получил эту ошибку:

 Type mismatch: cannot convert from Stream<Menu> to 
     List<CompletableFuture<MainIngredient>>

Затем я также попробовал это

CompletableFuture<List<MainIngredient>> mainIngredient =        
    CompletableFuture
        .supplyAsync(() ->  resto1.getMenu()
                                .stream()
                                .map(menu -> MainIngredient.getMainIngredient(menu.getName()))
                                .collect(Collectors.toList()), executorService);

Но я получил CompletableFuture<List<MainIngredient>> вместо List<CompletableFuture<MainIngredient>>

1 Ответ

0 голосов
/ 30 ноября 2018

В вашем первом решении вам не хватает collect(toList()):

List<CompletableFuture<MainIngredient>> priceFutureList = resto1.getMenu().stream()
            .map(menu -> CompletableFuture.supplyAsync(() -> MainIngredient.getMainIngredient(menu.getName()), executorService))
            .collect(Collectors.toList());
...