我有一段代码想要重构成Java 8
List<String> menus = new ArrayList<String>();
for (Menu menu : resto1.getMenu()) {
MainIngredient mainIngredient = MainIngredient.getMainIngredient(menu.getName());
if (mainIngredient.getIngredient().indexOf("Vegan")!=-1) {
menus.add(menu.getName());
}
}在重构这个简单的循环之后,看起来代码太多了.我正确地使用了CompletableFutures吗?
ExecutorService executorService = Executors.newCachedThreadPool();
List<CompletableFuture<MainIngredient>> priceFutureList = resto1.getMenu().stream()
.map(menu -> CompletableFuture.supplyAsync(
() -> MainIngredient.getMainIngredient(menu.getName()), executorService))
.collect(Collectors.toList());
CompletableFuture<Void> allFuturesDone = CompletableFuture.allOf(
priceFutureList.toArray(new CompletableFuture[priceFutureList.size()]));
CompletableFuture<List<MainIngredient>> priceListFuture =
allFuturesDone.thenApply(v -> priceFutureList.stream()
.map(CompletableFuture::join)
.collect(toList()));发布于 2018-11-30 13:17:34
为什么不只是?
List<String> menus = resto1.getMenu()
.stream()
.map(m -> MainIngredient.getMainIngredient(m.getName()))
.filter(m -> m.getIngredient().indexOf("Vegan")!=-1)
.collect(toCollection(ArrayList::new));您的命令式方法很慢吗?您必须使用CompletableFuture吗?
https://stackoverflow.com/questions/53558282
复制相似问题