如何解决java lambda过滤器未来的集合?
我有一个未来的集合,我想过滤掉集合中返回的错误结果,但是使用 lambda 来报告(缺少返回语句),我想得到一个看起来像List<Map<String, Object>>. 我应该怎么做才能实现过滤?
List<Future<Map<String, Object>>> future =
childIds.getChildOrder()
.stream()
.map(i -> service.submit(new some(i)))
.collect(Collectors.toList());
future.stream().filter(i -> {
try {
i.get().get("success").equals(Boolean.FALSE);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}).findAny().get().get();
Run Code Online (Sandbox Code Playgroud)
该Map<String, Object>结构看起来像这样 {"success":"false", "msg":"I got error"}
您必须在所有执行路径中都有 return 语句:
future.stream().filter(i -> {
try {
return i.get().get("success").equals(Boolean.FALSE);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
return false; // depending on what you wish to return in case of exception
}).findAny().get().get();
Run Code Online (Sandbox Code Playgroud)