加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java 8 Stream从返回值添加新对象到列表

发布时间:2020-12-15 04:47:48 所属栏目:Java 来源:网络整理
导读:我想保存方法的返回值,并使用它来创建一个新的对象,添加到列表中.以下是更清晰的代码块: final ListFooBoo fooboos = new ArrayList();for (Foo foo : foos) { OptionalBoo boo = generateBoo(foo); if (boo.isPresent()) { fooboos.add(new FooBoo(foo,boo
我想保存方法的返回值,并使用它来创建一个新的对象,添加到列表中.以下是更清晰的代码块:

final List<FooBoo> fooboos = new ArrayList<>();
for (Foo foo : foos) {
    Optional<Boo> boo = generateBoo(foo);
    if (boo.isPresent()) {
        fooboos.add(new FooBoo(foo,boo.get()));
    }
}

我尝试过这样的事情:

fooboos = foos
            .stream()
            .map(f -> generateBoo(f))
            .filter(Optional::isPresent)
            .map(Optional::get)
            .collect(Collectors.toList());

但显然我在这里遗漏了一些实际上正在创建FooBoo对象的东西.我如何使用java流方法完成这项工作?

解决方法

fooboos = foos
        .stream()
        .map(foo -> generateBoo(foo).map(boo -> new FooBoo(foo,boo))
        .filter(Optional::isPresent)
        .map(Optional::get)
        .collect(Collectors.toList());

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读