【发布时间】:2016-02-01 13:35:34
【问题描述】:
所以我很好奇如何使用 java8 流 API 更有效地重写以下代码。
public static List<FlightInfo> getResults(String origin,List<String> destinations) {
final String uri = "https://api.searchflight.com/;
List<FlightInfo> results = new LinkedList<FlightInfo>();
for(String destination:destinations) {
RestTemplate restTemplate = new RestTemplate();
String params = getParams(origin,destination);
FlightInfo result = restTemplate.postForObject(uri+params,FlightInfo.class);
results.add(result);
}
return results;
}
在这个方法完成它正在做的事情并且我收到 FLightInfo 对象列表后,我将它转换为一个流并将对其进行各种转换(分组依据等)。现在很明显这是一个长期运行的操作。此外,它实际上结合了对 Web 服务的多个 rest 调用,所以我在最后一次调用时已经获得了大部分数据,但在整个方法返回之前我不会开始处理它。
有没有办法让这一切变得更加被动?我可以立即返回一个流,并让该流处理数据的操作,因为它从管道中下来,或者这有点太多了?在 Java 8 中如何做到这一点。
【问题讨论】:
标签: java rest java-8 lazy-evaluation java-stream