当前位置: 首页 > 知识库问答 >
问题:

懒流

微生毅
2023-03-14

一条溪流怎么能懒洋洋地造出来呢?在迁移基于集合的代码期间,我多次遇到这种模式:

Collection collection = veryExpensiveCollectionCreation();
return Stream.concat(firstStream, collection.stream());

如我们所知,所产生的级联流通常被懒散地处理。因此,如果流处理在级联流的第一部分停止,则根本不需要昂贵的收集。

伪代码看起来像

return Stream.concat(firstStream, new LazyStreamProvider() {
    Stream<Something> createStream() {
         return veryExpensiveCollectionCreation().stream();
    }
);

编辑:我知道将集合创建重构为流将是最好的,以使所有的API流都清楚。但是,在本例中,这是具有不可修改API的另一个组件的一部分。

共有1个答案

蒋硕
2023-03-14

也许不是最好的解决方案,但您可以在flatmap方法中构建集合,这样就可以懒洋洋地构建它:

return Stream.concat(
        firstStream, 
        Stream.of(Boolean.TRUE).flatMap(ignoredBoolean -> veryExpensiveCollectionCreation().stream())
);
 类似资料:
  • 问题内容: 我有,与有着多对多的关系。 因此表布局为: 为了得到实体A的对象:我叫其不 使用spring和hibernate。 问题是,有时后续代码仅需要A,有时后续代码将继续访问关联的B,因此我们希望在某些情况下使用 延迟加载, 在某些情况下则 渴望 使用。但是问题是所有数据库访问都是通过同一单一数据库提供的,因此只有一种方法。 我应该创建方法getById()的两个版本吗? 但是对于更复杂的情

  • 我有一个数据表的问题-懒加载。我认为问题是在IdiomasBean.java(TableBean.java),如果我把: 我得到了正确的数据表,但是<代码>按排序、筛选和不起作用。 我得到:java。lang.NullPointerException这里是堆栈跟踪: 下面是代码的其余部分: 指数xhtml diomasBean.java 懒散的数据模型。JAVA IdiomasBo.java 习语

  • 引入 Lazyload 是 Vue 指令,使用前需要对指令进行注册。 import { createApp } from 'vue'; import { Lazyload } from 'vant'; const app = createApp(); app.use(Lazyload); // 注册时可以配置额外的选项 app.use(Lazyload, { lazyComponent:

  • main.js import Vue from "vue"; import { Lazyload } from "feui"; Vue.use(Lazyload, { lazyComponent: true, //失败时显示 error: "https://i.loli.net/2018/01/29/5a6e858413275.png", //loading图 l

  • <button id="alert"> 点我显示警告 </button> require(['jquery', 'moye/LazyImg'], function ($, LazyImg) { var html = ['<div class="content"><div class="lazy-img">']; var img1 = 'https://tb2.bdstati

  • LazyLoad 懒加载 平台差异说明 App H5 微信小程序 支付宝小程序 百度小程序 头条小程序 QQ小程序 √ √ √ √ √ √ √ 基本使用 通过image参数传入图片的src路径即可 注意 由于uni-app认给了image组件的height为225px,同时也只uni-appimage组件的mode参数为widthFix时,image才会自动计算出一个高度值 覆盖默认的height