java - 如何一起使用 completablefuture 和 Streams

标签 java asynchronous java-8 java-stream completable-future

我想与 CompletableFuture 一起工作和 Stream同时。像改造一个 CompletableFuture<Stream<String>>进入CompletableFuture<Stream<Team>> .

我从 CompletableFuture<String> 做了类似的事情至 CompletableFuture<Integer> .

CompletableFuture<Stream<String>> getMostPopularTeamNames(int maxResults) {
    CompletableFuture<Stream<String>> mostPopularTeamNames;

    WorldCupSocialApi.getMostPopularTeamNames(1, maxResults, teams -> {
        mostPopularTeamNames = CompletableFuture.supplyAsync(() -> teams.stream());
    });

    return mostPopularTeamNames;
}

我正在尝试做类似的事情:

CompletableFuture<Stream<Team>> cf = getMostPopularTeamNames(5).thenApply(s -> {
    s.map(name -> new Team(name))
}

但我不确定我是否s将是 StringStream ,如果我可以那样映射它...

最佳答案

那么,让我们将问题分解为两个较小的问题:

  1. 正在转换 CompletableFuture<T>CompletableFuture<R>
  2. 正在转换 Stream<String>进入Stream<Team>

第一个可以使用 thenApply 实现或 thenApplyAsync . 第二个可以使用标准 map 来实现操作 Stream实例。

现在,一旦您尝试将它们结合起来,就可以像应用 CompletableFuture<String> 的任何其他转换一样思考。 ,现在应该很清楚了,您可以简单地执行以下操作:

CompletableFuture<Stream<Team>> cf = getMostPopularTeamNames(5)
  .thenApply(s -> s.map(name -> new Team(name));

sStream<String>转换成 Stream<Team> - 这两种类型之间没有神奇的转换

关于java - 如何一起使用 completablefuture 和 Streams,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56839326/

相关文章:

java - 有没有办法在 JavaFX TableView 上使用 GregorianCalendar?

javascript - 克隆整个 JavaScript ScriptEngine

c# - 在 async/await 中正确处理 HttpClient 异常

java - 如何从 lambda 表达式返回值?

java - 使用 Java 8 时间 API 根据当前日期在三个月内填充一周的最后几天(周一至周日)的 arrayList

java - 正确配置 dispatcher-servlet、applicationContext 和 web.xml

java - Java 中 AES 加解密的首选方法

c# - 本地任务如何在完成之前避免垃圾回收

c++ - 如何在 C++ 中异步执行 curl_multi_perform()?

java - 使用 Java 8 Streams API,在调用 Collectors.toSet() 时是否可以依赖 sorted()?