首页 > 解决方案 > 任何人都可以帮助转换为 lambda 表达式吗?

问题描述

我想用 lambda 转换 for 循环。

我只是想得到错误的结果,请帮助转换为 lambda 表达式,谢谢。

地图结构看起来像这个内容看起来像
`{"success":"false","msg":"I got error"}`
List<Future<Map<String, Object>>> tfFuture = lists.stream().map(i -> service.submit(new what(i))).collect(Collectors.toList());

for(int i=0;i<tfFuture.size();i++){
                if(tfFuture.get(i).get().get("success").equals(Boolean.FALSE)){
                    break;
                }
                return tfFuture.get(i).get();
            }

我只想得到错误的结果

{"success":"false","msg":"I got error"}

标签: javalambda

解决方案


您可以使用filter()andfindFirst()并且不需要将任何一个收集到 List 中:

return 

    lists
            .stream()
            .map(i -> service.submit(new what(i)))
            .map(Future::get)
            .filter(m -> m.get("success").equals(Boolean.FALSE))
            .findFirst().mapping(m-> m.get("success") + ":" + m.get("msg"))
            .orElse(null);

如果没有匹配,我在这里返回 null 作为默认值。


推荐阅读