首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java 8:流优化,在同一个实例上调用相同的方法两次

Java 8:流优化,在同一个实例上调用相同的方法两次
EN

Stack Overflow用户
提问于 2017-06-19 17:27:09
回答 2查看 1.3K关注 0票数 1

流有缓存吗?还是优化相同的调用?

代码语言:javascript
复制
    list.stream()
            .filter(bean ->  manager.find(bean.getID()).getApi() != null)
            .peek(bean -> {
                Entity entity = manager.find(bean.getID());
                //... logic with entity here
                }
            });

在迭代期间将调用多少次manager.find()?你能提出更好的方法来实现这段代码吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-06-19 17:33:09

回答

改为:

代码语言:javascript
复制
list.stream()
    .map(bean -> manager.find(bean.getID()))
    .filter(bean ->  bean.getApi() != null)
    .forEach(bean -> {
        //TODO
     });

map将转换所有元素中的调用manager.find,用manager.find(bean.getID())加载内存中的调用

地图示例:

Stream.of(1,2,3,4,5,6).map(String::valueOf).forEach(System.out::println);

  1. Stream.of(1,2,3,4,5,6) ->我们有一个整数流
  2. map(String::valueOf) ->我们将为流中的所有元素调用String.valueOf(i),将其转换为字符串流。
  3. forEach(System.out::println);将打印所有元素(现在为String)

链接

https://www.mkyong.com/java8/java-8-streams-map-examples/

https://docs.oracle.com/javase/8/docs/api/java/util/stream/Stream.html

http://www.concretepage.com/java/jdk-8/java-8-stream-map-example

票数 6
EN

Stack Overflow用户

发布于 2017-06-19 17:31:13

你可能会想用相反的方法来做:

代码语言:javascript
复制
list.stream()
   .map(bean -> manager.find(bean.getID()))
   .filter(entity-> entity.getApi() != null)
   .forEach(entity -> { /* logic here*/ });
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44636552

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档